```
void cun(){
int i;
printf("存入的学号为:");
scanf("%d",&i);
while(i){
printf("请输入姓名:");
scanf("%s",stu[i].name);
printf("请输入身份证");
scanf("%c%1d%1d",&stu[i].id1,&stu[i].id2,&stu[i].id3);
printf("请输入你的专业:");
scanf("%s",stu[i].zhuanye);
printf("请输入你的语数英成绩:");
scanf("%d%d%d",&stu[i].chinese,&stu[i].math,&stu[i].english);
}main();
}```
为什么会出现这样的结果,那个%s后面又不能+\n如何解决这样的情况
因为你遗留了符号在缓冲区。比如之前的空格或者回车,这些都是符号,现在被zhuanye接受了。所以它不等你输入(因为它已接受了缓冲区之前遗留的符号)所以直接下一句了。
解决办法:每个scanf下一句加上一句:getchar() 来吃掉/接受你每次键盘输完的那个回车符号,从而不影响下一句