У меня проблемы с добавлением значения переменной char в строку в C

Я пытался использовать strcat(array, &charVariable), чтобы добавить charVariable в массив, когда я отображаю массив, он отображает это ╠╠╠╠╠╠╠╠. Может кто-нибудь мне помочь?

3 ответа

Проблема в том, что strcat ожидает указатель на последовательность символов с нулевым символом в конце. В вашем случае вы передаете адрес автономного char переменная. Если элемент в памяти сразу после char переменная не равна нулю, вы будете вызывать неопределенное поведение (добавление мусорных символов или сбой).

Вот как это сделать правильно:

char tmp[2];
tmp[0] = charVariable;
tmp[1] = '\0';
strcat(array, tmp); 

strcat предназначен для использования в строках с нулевым байтом \0 в конце. Вы можете попробовать подход, предложенный dasblinkenlight, но более эффективный подход (при условии array имеет достаточно места для добавления дополнительного символа, который вы должны будете использовать в любом случае, чтобы использовать strcat) является:

int len = strlen(array);
array[len] = charVariable;
array[len+1] = '\0';

Правила использования strcat():

  1. В целевой строке уже должен быть терминатор с нулевым символом ('\0'), в противном случае strcat() не сможет найти конец этому.

  2. Целевая строка должна быть достаточно большой, чтобы содержать строку, к которой вы добавляете ее, в дополнение к символам и завершающему нулевому символу, который она уже содержит.

  3. Исходная строка, которую вы добавляете к целевой строке, также должна иметь нулевой терминатор, в противном случае strcat() не сможет найти конец этому.

добавление

@dasblinkenlight дает один правильный способ сделать это. Вот еще один:

size_t  len;
len = strlen(array);
array[len] = charVariable;
array[len+1] = '\0';
Другие вопросы по тегам