c - 如何删除C中的结构条目

标签 c struct

我们如何从结构列表中删除其中的一些。删除结构后,不应留下任何空白空间。

尝试了以下代码来完成任务,但没有成功。

   struct symtab *sp;
   for(sp = symtab; sp < &symtab[NSYMS]; sp++)
       if(sp->scope == scope) // delete
       {
           sp = sp+1;

       }

最佳答案

你可以使用 memmove():

//pseudocode, not tested
struct symtab* end = &symtab[NSYMS];
for(sp = symtab; sp < end; sp++) {
    if(sp->scope == scope) {
        memmove( sp, sp + 1, (end - sp) * sizeof(struct symtab);
        sp++;
        end--;
    }
}            

请注意 end 可以更改,因为数组可能会变得“更短”。使用该数组的其他代码必须只能访问缩短的区域。

关于c - 如何删除C中的结构条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1838835/

相关文章:

c - 将 mallopt M_CHECK_ACTION 错误输出到日志文件

c - 从按位操作的数组接收错误值,包括 C 代码

swift - 将结构传递给函数并在函数内创建该结构的实例

c++ - 在结构中指定设备特定功能

struct - D(2) 编程 : chaining functions call on struct

c - 为什么 C 标准不支持嵌套函数?

c++ - c/c++中的静态指针默认值

c - 解释一下算法中int *count相关的语句

swift - 在闭包中捕获结构引用不允许发生突变

c - C99 结构中的函数重载