Как проверить, является ли массив символов нулевым? - PullRequest
1 голос
/ 28 сентября 2011

Я делал (в C)

char array[100];
if (array == NULL)
   something;

, что очень неправильно (что я наконец-то узнал, так как моя программа не работает).В каком эквиваленте я мог бы протестировать новый массив, чтобы увидеть, не было ли в него еще ничего вставлено?

Кроме того, как сделать массив пустым / очистить его?

Я знаюесть другие сообщения на эту тему там, но я не мог найти прямой ответ.

1 Ответ

2 голосов
/ 28 сентября 2011

Массив, объявленный с помощью

char array[100]

, всегда содержит 100 символов.

Под "очисткой" вы можете подразумевать назначение определенного символа каждому слоту, например, символа '\0'.Вы можете сделать это с помощью цикла или одного из нескольких библиотечных вызовов для очистки памяти или перемещения блоков памяти.

Посмотрите на memset - он может «очистить» или «сбросить» ваш массивприятно.

Если вы работаете со строками, то со специальными массивами символов, оканчивающимися на ноль, для того, чтобы проверить для пустого массива, см. этот вопрос SO .В противном случае, если у вас есть обычный массив символов, не предназначенный для представления текста, напишите цикл, чтобы убедиться, что все записи в массиве являются вашим специальным пустым символом, независимо от того, какой вы выберете его.

Вы также можете объявить свой символмассив выглядит так:

char* array = malloc(100);

или даже

char* array = NULL;

, но это немного отличается.В этом случае массив NULL означает «массив не выделен», что отличается от «массив был выделен, но я еще ничего в него не поместил».

...