【问题标题】:Segmentation fault when memset struct array in cc中的memset struct数组时出现分段错误
【发布时间】:2017-05-19 04:24:24
【问题描述】:

我正在尝试清空结构数组中的所有数据。

但事实证明是分段错误。 谁能帮帮我。

结构

struct entry
{
   char  user;
    char  name[9];
    char  extension[4];
    short blockcount;
    short block[8];
};
struct entry directory[128];

main()

for (int i = 0; i < 128; ++i)
{
      memset(&directory[i], 0, sizeof(directory));
}

【问题讨论】:

    标签: c arrays for-loop struct memset


    【解决方案1】:

    你需要改变

    memset(&directory[i], 0, sizeof(directory));
    

    memset(&directory[i], 0, sizeof(struct entry));
    

    因为你想 memset 结构数组的单个元素

    你也可以使用 memset 整个数组

    memset(directory, 0, sizeof(directory));// single statement, no need to loop all elements
    

    【讨论】:

    • 谢谢,没想到这么简单
    • sizeof(directory[0]) 也将以相同的方式工作。使其与您在问题中提出的内容相似。
    猜你喜欢
    • 2020-11-21
    • 2020-02-28
    • 2021-10-31
    • 1970-01-01
    • 2021-03-12
    • 2020-08-02
    • 2012-12-22
    • 2013-11-10
    • 2011-11-24
    相关资源
    最近更新 更多