очистка массива символов c - PullRequest
99 голосов
/ 11 марта 2009

Я думал, что установив нулевым первый элемент, можно очистить все содержимое массива char.

char my_custom_data[40] = "Hello!";
my_custom_data[0] = '\0';

Однако, это только устанавливает первый элемент в нуль.

или

my_custom_data[0] = 0; 

вместо использования memset, я думал, что 2 приведенных выше примера должны очистить все данные.

Ответы [ 16 ]

1 голос
/ 16 августа 2012

Как насчет следующего:

bzero(my_custom_data,40);
1 голос
/ 01 июля 2009

установить первый элемент в NULL. печать массива char ничего вам не вернет.

1 голос
/ 11 марта 2009

Я подумал, установив первый элемент к нулю очистит весь содержимое массива char.

Это не правильно, как вы обнаружили

Однако, это только устанавливает первый элемент к нулю.

Точно!

Вам нужно использовать memset, чтобы очистить все данные, недостаточно установить одну из записей на ноль.

Однако, если для элемента массива значение null означает что-то особенное (например, при использовании строки с нулевым завершающим символом в), может быть достаточно установить нулевой первый элемент. Таким образом, любой пользователь массива поймет, что он пуст, хотя массив все еще содержит старые символы в памяти

0 голосов
/ 19 января 2018

Я обычно просто так:

memset(bufferar, '\0', sizeof(bufferar));
0 голосов
/ 16 ноября 2013
void clearArray (char *input[]){
    *input = ' '; 
}
0 голосов
/ 23 ноября 2011

Попробуйте следующее:

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