У меня проблемы с добавлением значения переменной 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()
:
В целевой строке уже должен быть терминатор с нулевым символом ('\0'), в противном случае
strcat()
не сможет найти конец этому.Целевая строка должна быть достаточно большой, чтобы содержать строку, к которой вы добавляете ее, в дополнение к символам и завершающему нулевому символу, который она уже содержит.
Исходная строка, которую вы добавляете к целевой строке, также должна иметь нулевой терминатор, в противном случае
strcat()
не сможет найти конец этому.
добавление
@dasblinkenlight дает один правильный способ сделать это. Вот еще один:
size_t len;
len = strlen(array);
array[len] = charVariable;
array[len+1] = '\0';