C语言两个scanf输入数据,为什么前一个把后面的输入的数据也接收了啊

Stu stu;
printf("请输入学生的各项信息:\n");
printf("请输入学生的各项信息:\n");
printf("学生学号:");
scanf("%s", stu.id);
printf("输入name前学号是:%s\n", stu.id);
printf("学生姓名:");
scanf("%s", stu.name);
printf("\n 输入name后学号是:%s\n", stu.id);

img

把Stu的定义贴出来,我猜测是std.id溢出了,你定义的长度是9字节吗?

感觉是你内存开少了导致两个字符串连在一起了
看一下你的Stu结构体定义
注意字符串存储的时候,字符串末尾会有'\0标识字符串的结束,这个结束符也会占用一个char的空间,所以声明字符数组的时候尽量开的大一点,防止字符串结束符被其他操作覆盖
有帮助望采纳~

你的结构体怎么定义的,id这个数组可能定义的太小了。

printf("输入name前学号是:%s\n", stu.id);
改成
printf("输入name前学号是:”);