您的位置:

c语言怎么清除结构体数组的数据,c语言数组删除数据

本文目录一览:

c语言中如何删除结构体数组中的一个值

结构体同样可以看做一个基本数据类型。

删除结构体数组中的一个值,就像删除一个普通数组中的值一样的。

普通数组的删除是将后面的数据向前移动,达到覆盖掉的效果

比如:a[4]要删除第二个元素。那么把a[1] = a[2];a[2] = a[3];

最后一个不要动,也最好别去访问它,就相当于把第二个元素删除了。

结构体跟上面类似,但是结构体是你自定义的数据,所以在定义中,你要给它重载赋值符号(也就是=),要不然赋值的过程中会出错

C语言里如何清空结构体内的数据

memset((char*)test,0,sizeof(test));试试。我是这么做的·。 补充: 或许是for(i=o;i10;i++)memset((char*)test[i],0,sizeof(test[i]));//里面的i是你想要清空的那个变量 追问: 能详细讲解一下这两个地方吗(char*)test \sizeof(test) 回答: 函数原型:memset(void *, int, size_t);(char*)test 是第一个参数,表示test结构体的首地址test强制转化为char型的。sizeof(test)是计算test结构体的大小0表示清空。 追问: sizeof()里面的结构体可以用结构体指针代替吗? 回答: 应该不行·。sizeof()括号里是数据类型,所以貌似我上面写错。应该是memset((char*)test1[i],0,sizeof(test)); 追问: 好像我用指针也通过了,........竟然没报错,而且数据也确实清空了

C结构体数组删除操作

结构体数组删除和一般数组删除操作类似,把后面的数据往前移就行了,不过不太适用,参考一下就行了

#include stdio.h

#include string.h

void del(void *arr, int n, unsigned int size, int index) {

    int i, j = index * size;

    for (i = index + 1; i  n; ++i) {

        memcpy((void *)((char*)arr + j), (void *)((char*)arr + j + size), size);

        j += size;

    }

}

typedef struct foo {

    int a, b;

}Foo;

int main() {

    Foo f[3];

    f[0].a = 0;

    f[0].b = 0;

    f[1].a = 1;

    f[1].b = 1;

    f[2].a = 2;

    f[2].b = 2;

    del(f, 3, sizeof(Foo), 1);

    return 0;

}