неожиданное поведение при добавлении символов с помощью strcat

char buf[256];
char c48 = (char) 48;
char c49 = (char) 49;
char c50 = (char) 50;
char c51 = (char) 51;
char c52 = (char) 52;
char c53 = (char) 53;
strcpy(buf, &c48);
strcat(buf, &c49);
strcat(buf, &c50);
strcat(buf, &c51);
strcat(buf, &c52);
strcat(buf, &c53);
puts(buf);

Я ожидал, что строка вывода будет 012345
Однако, когда я сделал cout, это результат 0? 10? 210? 3210? 43210? 543210 ?.
Я не понимаю, почему это происходит. Может ли быть так, что buf копируется с использованием метода strcat? Извините за этот основной вопрос. Я прихожу из Фоны Ява.

0

Решение

strcpy(buf, &c48);

Второй параметр не является указателем на строку, оканчивающуюся NUL. Эта строка и все строки после нее демонстрируют неопределенное поведение.

3

Другие решения


По вопросам рекламы [email protected]