从C中删除数组中的条目

时间:2011-12-12 13:09:09

标签: c

我正在寻找一种从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;
}

2 个答案:

答案 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来调整数组大小。