Как вы очищаете вектор строк в C? - PullRequest
0 голосов
/ 21 мая 2018

Использование глобальной переменной, такой как:

params_vector[100][100] = {};

Можно ли «сбросить» или «очистить» значения внутри этого массива, чтобы они были равны с момента его инициализации?Есть много примеров с char *arg[] (который arg[i] = NULL работает), но ни одного с такой «матрицей», как эта.

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Использование memset:

memset(params_vector, 0, sizeof(params_vector));
0 голосов
/ 21 мая 2018

Предполагая, что это многомерный массив char, например,

char params_vector[N][M];

для некоторого значения N и M - вам не нужно memset() вся вещь в '\ 0';достаточно задать первый символ каждой строки равным '\ 0':

for(size_t i = 0; i < N; i++) {
    params_vector[i][0] = '\0';
}

Однако, если N мало, эта оптимизация может не стоить и

memset(params_vector, '\0', M * N);

было бы хорошо.

0 голосов
/ 21 мая 2018

Если это многомерный массив char, вы можете "сбросить" его, просто вызвав

#include <string.h>

memset(params_vector, 0, sizeof params_vector);

Если вам просто нужно установить первый байт каждой строки0, использование цикла for может быть более эффективным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...