Code Bye

突然发现的这个问题 .一眼看不出来,运行错后也很难找到错误之处,等你来战??


代码在下面:
#include”stdio.h” 
main()
{
typedef struct
{
int num;
char name[20];
char sex;
float score;
}student;
student stu1;
scanf(“%d”,&stu1.num);
scanf(“%s”,stu1.name);
scanf(“%c”,&stu1.sex);
scanf(“%f”,&stu1.score);
printf(“%d\n%s\n%c\n%.1f\n”,stu1.num,stu1.name,stu1.sex,stu1.score);
}
来看看吧

比如输入:110 zgh m 10   
就会发生如下结果,真是纳闷,为什么会跳过输入性别sex那一个scanf,
解决了   是我的锅   把scanf和gets的不同没辨别清楚  解决方法是在%s后价格空格    希望大家别犯这个错误
40分
是啊,scanf()在输入字符的时候会把回车当成输入,相邻两个输入字符的scanf()需要在后一个scanf()加空格
scanf(“%c”,&a)
scanf(”  %c”,&b)
引用 3 楼 kellen_ 的回复:

解决了   是我的锅   把scanf和gets的不同没辨别清楚  解决方法是在%s后价格空格    希望大家别犯这个错误


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明突然发现的这个问题 .一眼看不出来,运行错后也很难找到错误之处,等你来战??