Какой лучший способ сбросить char [] в C? - PullRequest
5 голосов
/ 15 ноября 2009

Я использую строку:

char    word[100];

Я добавляю несколько символов к каждой позиции, начиная с 0. Но тогда мне нужно будет очистить все эти позиции, чтобы я мог начать добавлять новые символы, начиная с 0.

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

Ответы [ 4 ]

17 голосов
/ 15 ноября 2009

Если вы хотите обнулить весь массив, вы можете:

memset(word, 0, sizeof(word));
12 голосов
/ 15 ноября 2009

Вам не нужно очищать их, если вы используете строки с нулевым символом в стиле C. Вам нужно только установить элемент после последнего символа в строке в NUL ('\ 0').

Например,

char buffer[30] = { 'H', 'i', ' ', 'T', 'h', 'e', 'r', 'e', 0 };
// or, similarly:
// char buffer[30] = "Hi There";  // either example will work here.

printf("%s", buffer);
buffer[2] = '\0';
printf("%s", buffer)

выведет

Привет
Привет

, хотя все еще верно, что buffer[3] == 'T'.

3 голосов
/ 28 марта 2014

strcpy(word,"") также может использоваться для этой цели.

0 голосов
/ 15 ноября 2009

*word = '\0';

Дополнительный материал, чтобы преодолеть ограничение в 15 символов закатывает глаза .

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