m0_72997327 2023-01-18 13:28 采纳率: 80%
浏览 44
已结题

C语言如何应对随意输入

例如scanf("%d",&a);但用户随意输入如dhhd。导致循环卡住,该如何解决

  • 写回答

5条回答 默认 最新

  • 「已注销」 2023-01-18 13:31
    关注

    在C语言中,当使用scanf()函数读取格式化输入时,如果用户输入的数据与格式不匹配,scanf()函数会被阻塞,导致程序卡住。

    为了解决这个问题,可以采用以下几种方法:

    使用fgets()函数读取字符串,再使用sscanf()函数转换成整型。这样可以在用户输入非整型数据时,跳过不合法的输入。

    使用fscanf()函数读取整型数据,并使用feof()和ferror()函数检测文件是否读取完毕或发生错误。

    使用fgets()函数读取一行字符串,再使用strtol()函数将字符串转换为整型。

    使用getchar()函数读取字符,再判断读取的字符是否是数字,如果不是,则跳过。

    在使用以上方法时,需要注意处理好错误和异常情况.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月7日
  • 已采纳回答 1月30日
  • 创建了问题 1月18日

悬赏问题

  • ¥15 w10部分软件不能联网
  • ¥15 关于安装hbase的问题(操作系统-windows)
  • ¥15 cadence617版本,如何做一个参数可调的反相器
  • ¥15 novnc连接pve虚拟机报错安全协议不支持262
  • ¥15 设备精度0.03给多少公差能达到CPK1.33
  • ¥15 qt+ffmpeg报错non-existing PPS 0 referenced
  • ¥15 FOC simulink
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配