使用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