scanf函数对异常输入的处理

scanf函数对异常输入的处理

标签(空格分隔): C 双学位高级语言程序设计 编程窍门 C输入输出


如果想用C语言的scanf函数筛选正常输入,过滤异常输入,那便可以用scanf函数的返回值了。
scanf函数有返回值,但是我们一般都仅用其输入功能。返回值用法如下。

#include <stdio.h>
int main()
{
    int a;
    ret = scanf("%d",&a);
    while (ret != 1)
    {
        while (getchar() != '\n');
        ret = scanf("%d",&a);
    }
}

scanf返回值的意思是正确读入的数据项数。当输入非整型时,判断为0,进入第一个while;之后,如果接下来未按回车,即换行符,会一直重复第二个while流程,将接下来输入的所有数据存入缓冲区中;while后面跟“;”的意思是这个循环是空循环,满足条件便会一直重复。直到输入回车,getchar将所有数据读走,重新输入数据,判断是否为整型数,为真,则读入;为假,则重复上述流程。

`scanf()` 函数是 C 语言的标准库函数之一,用于从标准输入设备(通常是键盘)读取用户输入的数据。这个函数允许用户通过控制输入格式指定输入数据的类型,并且能够处理空格、制表符等空白字符。 ### `scanf()` 的基本语法 ```c int scanf(const char *format, ...); ``` 此函数需要两个参数: 1. **format** - 这是一个格式字符串,指定了如何解析输入以及期望的数据类型。 2. **...** - 这代表后续的参数会被当作输入值。 ### 示例代码展示如何使用 `scanf()` 输入整数和浮点数 ```c #include <stdio.h> int main() { int number; float decimal; printf("请输入一个整数和一个浮点数: "); // 首先尝试读取整数 if (scanf("%d", &number) != 1) { fprintf(stderr, "错误:无法读取整数值。\n"); return 1; // 返回非零值表示程序异常终止 } // 再次使用 %f 格式化字符串来读取浮点数 if (scanf("%f", &decimal) != 1) { fprintf(stderr, "错误:无法读取浮点数值。\n"); return 1; } printf("您输入的是:整数:%d,浮点数:%f\n", number, decimal); return 0; } ``` 在这个示例中: 1. 使用 `%d` 表示预期接收整数类型的输入并存储到变量 `number` 中。 2. 使用 `%f` 表示预期接收浮点数类型的输入并存储到变量 `decimal` 中。 请注意,在实际应用中,如果输入格式不符合预期或者存在非法输入(例如在尝试读取整数时输入了浮点数),`scanf()` 可能会停止工作,并导致程序中断。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值