【发布时间】:2020-08-24 06:19:17
【问题描述】:
在输入姓名和姓氏后(例如:姓名:Mario 姓氏:Rossi)作为输出而不是得到Mario Rossi,我得到ossi Rossi,但我不明白为什么。
int main() {
char space[] = " ";
char name[40], surname[40], space_name[40], space_surname[40];
printf("what's your name");
scanf("%[^\n]", &name);
printf("Whats your surname");
scanf(" %[^\n]", &surname);
strcpy(space_surname, strcat(space, surname));
strcat(name, space_surname);
printf("%s", name);
}
【问题讨论】:
-
space只能存储一个字符,但您要复制更多内容,从而覆盖任何内容。你看到的是未定义的行为,因为这个。 -
@usr2564301 谢谢你的回答,所以基本上解决这个问题的一个好方法是用空格[N]代替N一个大数字?你能告诉我其他解决这个问题的方法吗?
-
是的,这将是处理它的标准方法。否则,您可以计算所需的所有空间并使用可变长度数组,或者您可以使用
malloc动态分配空间。 -
谢谢大家