问题描述
在编写C语言程序时,需要使用
scanf语句从键盘读入一个整数,但是在测试的时候,如果不小心输入了浮点数或者字符的话,那情况就糟了。
比如如下代码:
#include <stdio.h>
int main()
{
int a = 0;
while (1)
{
scanf("%d", &a);
printf("%d\n", a);
}
}
错误展示1(输入浮点数的错误示范):

错误展示2(输入字符的错误示范):

我们发现,误输入浮点数或者字符,都会导致死循环。
解决过程
要想解决问题,首先得了解scanf()函数。
scanf()函数是C标准库stdio里面定义的用于获取用户输入的函数。scanf的返回值是已经成功赋值的变量个数。
查阅资料发现,当我们要求scanf语句接收整型数值时,他就会跳过所有的非数字字符,专门接收数字,而非数字字符留在缓冲区中,下一次循环又会跳过缓冲

本文介绍了在C语言编程中遇到的scanf函数因输入非整数导致的死循环问题。通过分析scanf的工作原理,提出了解决方案,即检查scanf是否成功赋值并验证输入是否为浮点数。提供了示例代码,并鼓励读者根据需求进行改进。
最低0.47元/天 解锁文章
8511

被折叠的 条评论
为什么被折叠?



