You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用scanf仅接收指定类型值并在输入不合法时输出错误提示

实现方法

scanf() 函数的返回值代表成功匹配并赋值给变量的输入项数量,读取十六进制时如果输入非法值(比如"ZZ"),%x匹配失败,返回值会是0,你可以基于这个返回值做错误判断,同时需要清空输入缓冲区残留的非法字符,避免后续读取操作异常。

示例代码如下:

#include <stdio.h>

int main() {
    unsigned int hexa_decimal_num;
    // 接收scanf的返回值
    int read_result = scanf("%x", &hexa_decimal_num);
    
    if (read_result != 1) {
        printf("Error!\n");
        // 清空输入缓冲区残留的非法字符
        while(getchar() != '\n');
        // 可根据业务需求调整后续逻辑,比如终止程序或者提示重新输入
        return 1;
    }

    // 输入合法后的业务逻辑,示例:输出读取到的十六进制值
    printf("读取成功,数值为%#x\n", hexa_decimal_num);
    return 0;
}

补充说明:

  • 如果需要支持用户重复输入直到输入合法,可将读取和判断逻辑封装在循环内
  • 输入流到达末尾时scanf()会返回EOF,也属于异常场景,可和匹配失败的逻辑合并处理

内容的提问来源于stack exchange,提问作者Nadav Banay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:04