当c中的memset结构数组时出现分段错误

mar*_*rkh 0 c arrays struct for-loop memset

我试图清空struct数组中的所有数据.

但事实证明是分段错误.有人可以帮帮我吗.

结构

struct entry
{
   char  user;
    char  name[9];
    char  extension[4];
    short blockcount;
    short block[8];
};
struct entry directory[128];
Run Code Online (Sandbox Code Playgroud)

主要()

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

Pra*_*ras 5

你需要改变

memset(&directory[i], 0, sizeof(directory));
Run Code Online (Sandbox Code Playgroud)

memset(&directory[i], 0, sizeof(struct entry));
Run Code Online (Sandbox Code Playgroud)

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

为了整个arry你也可以使用

memset(directory, 0, sizeof(directory));// single statement, no need to loop all elements
Run Code Online (Sandbox Code Playgroud)