Как я могу strcat один символ для массива символов в C++

Я хочу получить одного персонажа из cin.get() и добавьте его в массив символов. Я использую strcat, но один символ имеет ошибку. Пожалуйста, помогите мне, если вы знаете. спасибо за все ответы.

void main (void)
{
 char e[80]="hi";
 char c;
 cin.get(c);
 strcat(e,c);
 cout << "e: " << e << endl;
 getch();
}

Это часть моего кода, который я хочу сделать.

4 ответа

Решение

stncat() объединяет две строки, сигнатура метода выглядит следующим образом,

char * strncat ( char * destination, const char * source, size_t num );

но вы пытаетесь объединить символ, который не является правильным!

Поскольку вы используете C++, это безопасно и легко сделать в стиле C++, а не в стиле C.

std::string cAsStr(c);   // Make the string
e += aAsStr;             // + operator does the concatenation 

Если вы отчаянно хотите сделать это в стиле C, используйте:

char cAsStr[] = { c, '\0' }; // Making a C-style string
strcat(e, cAsStr);           // Concatenate

Измените strcat(e,c) на strncat(e, &c, 1)

Небольшое изменение в вашем коде сделает это.

char e[80]="hi";
char c[2] = {0}; // This is made as an array of size 2
cin.get(c[0]); // Character is read into the first position.
strcat(e,c);
cout << "e: " << e << endl;
char s[] = { c, 0 };
strcat(e, s);

Но, пожалуйста, просто используйте std::string:

string e="hi";
char c;
cin.get(c);
e += c;
cout << "e: " << e << endl;
Другие вопросы по тегам