Как использовать memset для двухмерного массива? - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть двойное затемнение.массив:

 alarm_1_active_buffer[MAX_NUM_ALARMS][MAX_ALARM_STRING_SIZE];

Я хочу очистить буфер перед его заполнением.
Примерно так:

 for(index=0; index<MAX_NUM_ALARMS ; index++)
    {
        memset(&alarm_1_active_buffer[index], 0, MAX_ALARM_STRING_SIZE);
        memset(&alarm_1_active_buffer[index],string, MAX_ALARM_STRING_SIZE);
    }

Не работает.

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Убедитесь, что сначала #include <string.h>:

memset(alarm_1_active_buffer, 0, sizeof(alarm_1_active_buffer));

Этот метод работает независимо от типа элементов в массиве.

1 голос
/ 23 февраля 2011

Поскольку массивы расположены в непрерывных адресных пространствах, вам не нужно делать ничего особенного для 2d массивов.Вы можете просто использовать memset(alarm_1_active_buffer, 0, MAX_NUM_ALARMS * MAX_ALARM_STRING_SIZE * sizeof(type of alarm_1_active_buffer));.

...