我正在寻找一种从C中的数组中删除条目的方法。同时删除结构中的条目。
我对C很新,有什么想法怎么做?
更新:
找到一个应该从结构中删除条目的代码:
void removeEntry(student *st, int *nr, char nu[50])
{
int k=0,i,j;
for(i=0;i<*nr;i++)
{
if(strcmp((st+i)->name,nu)==0)
{
k++;
for(j=i;j<(*nr-k);j++)
{
*(st+j)=st[j+1];
}
}
}
*nr=*nr-k;
}
答案 0 :(得分:3)
删除动态分配的数组中的条目(用存储在数组中的实际类型替换T
):
// delete element i in array a of size n
T *delete(T *a, size_t n, size_t i)
{
memmove(&(a[i]), &(a[i+1]), n - i - 1);
return realloc(a, sizeof(T) * (n - 1));
}
如果订单无关紧要,请将memmove
替换为t[i] = t[n-1];
无法从struct
删除成员。
答案 1 :(得分:1)
将删除条目后的所有条目一个接一个地移动到其前一个位置。当您使用动态数组时,您可能还需要执行realloc
来调整数组大小。