Как добавить один символ к строковому значению в c - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть код, в котором я должен добавить символ в начало строки.

Вот моя строка и мой персонаж:

char array[12]="12345678"
char var="K"

Значение готового массива должно быть таким:

array="K12345678"

В настоящее время я написал это как:

char temp[12]={0}
char array[12]="12345678"
char var="K"
strcpy(temp,var);
strncat(temp,array,sizeof(array));
strcpy(array,temp);

1 Ответ

2 голосов
/ 15 апреля 2019

Прежде всего обратите внимание, что

char var="K"

это не правильно. Для инициализации char сделайте

char var='K';

Тогда обратите внимание, что

strcpy(temp,var);

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

Это можно исправить, выполнив:

char temp[12]={0};
char array[12]="12345678";
char var='K';
temp[0] = var;  // Put the char as first character of temp
strncat(temp,array,sizeof(array));
strcpy(array,temp);

Лучшим вариантом будет memmove - что-то вроде:

// Move the current string 1 to the right (incl. the zero termination)
memmove(array+1, array, strlen(array) + 1);

// Insert the char in front
array[0] = var;

Если вы не хотите использовать memmove, вы также можете просто сделать простой цикл:

size_t i = strlen(array);
do
{
    array[i+1] = array[i];
    --i;
} while (i > 0);
array[0] = var;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...