使用VS2019编译C语言遇到的字符类型输入问题
使用vs2019编译c语言程序时,发现scanf(“%c”,&d);无法输入结果
问题描述
提示:发现在循环中,始终无法输入字符,输入字符语句一直被跳过
for (int i = 0; i < num; i++)
{
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",parr[i].name);
printf("请输入第%d个学生的年龄:", i + 1);
scanf("%d", &parr[i].age);
printf("请输入第%d个学生的分数:", i + 1);
scanf("%f", &parr[i].score);
printf("请输入第%d个学生的性别:", i + 1);
scanf(" %c",&parr[i].sex);
printf("\n第%d个学生的性别为:%c", i + 1,parr[i].sex);
}
原因分析:
提示:查阅资料发现在 "%c"前加一个空格即” %c“即可正常输入
scanf
在接受数据时,误接收到了上一个”\n“ 导致程序直接跳过字符输入语句
原因:%c只能接收单个字符
解决方法:
方法一:再加一句scanf。
方法二:使用函数fflush,清除流,就是在每个接收字符的scanf语句前面,加上fflush(stdin);
方法三:在%c前面加空格,抵消掉\n
https://blog.csdn.net/i1178632444/article/details/5028198
https://blog.csdn.net/ztmajor/article/details/80728602