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;
}

温馨提示:答案为网友推荐,仅供参考
相似回答