Ошибка сегментации, когда массив массива memset в c

Я пытаюсь очистить все данные в массиве struct.

но это оказывается ошибкой сегментации. Может кто-нибудь, пожалуйста, помогите мне.

Struct

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

главный()

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

1 ответ

Решение

Вам нужно изменить

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

в

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

как вы хотите запоминать отдельный элемент массива структуры

Для memset всего арри вы также можете использовать

memset(directory, 0, sizeof(directory));// single statement, no need to loop all elements
Другие вопросы по тегам