【发布时间】:2021-07-23 07:13:27
【问题描述】:
这是我必须做的:c。应该可以删除具有指定名称的动物。如果存在更多同名动物,则应删除所有同名动物。
这是我的代码:
void deleteAnimalByName(char *animalName, int *nrOfAnimals, ANIMAL *animalArray)
{
for(int i = 0; i < *nrOfAnimals; i ++)
{
if(strcmp((animalArray + i)->Name, animalName) == 0)
{
for(int j = i; j < *nrOfAnimals - 1; j++)
{
animalArray[j] = animalArray[j + 1];
}
(*nrOfAnimals)--;
}
}
}
尝试删除同名动物后的结果: 收容所中的动物:1
姓名:泰德
物种:鹦鹉
年龄:1
只有一个被删除,另一个保留。这是什么原因造成的?
【问题讨论】:
-
寻求调试帮助的问题必须提供完整的最小代码。这样其他人就可以看到完整的上下文,也可以运行它进行直接调试。见How to create a Minimal, Reproducible Example。
标签: arrays c struct c-strings function-definition