gpt4 book ai didi

C sscanf() 强制数字输入

转载 作者:行者123 更新时间:2023-12-01 00:35:02 28 4
gpt4 key购买 nike

我正在尝试使用 sscanf() 来验证命令行输入

我只想通过 1、0.1、0.111 之类的东西,
不是 a12 12a 或 1.2a

我试过

if (sscanf(input, "%f", &val) != 1) { // to check for 1 successful conversion
printf("invalid input");
}

但似乎我也在让无效输入通过。

有什么建议吗?

最佳答案

sscanf(input, "%f", &var)遇到输入 12a1.2a ,它会停在无效的输入部分,留下剩余的字符可供后续格式代码读取。

考虑以下字符串在有效数字之后的浮点数具有无效字符:

  • 1.0 2.0 (空格)
  • 1.0, 2.0 (逗号)
  • 1.0a 2.0 (一封信)

  • 空格和逗号对我们的人工解析引擎来说看起来不错;当发现无效字符时,机器浮点解析就会停止,无论是人类可接受的空格或逗号,还是丑陋的字母。

    如果你想确保浮点数后面没有紧跟垃圾,你可以使用类似的东西:
    n = sscanf(input, "%f%c", &var, &ch);
    if (n == 1 ||
    (n == 2 && (ch == ' ' || ch == ',' || ...))) {
    // ...
    }

    关于C sscanf() 强制数字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41916228/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com