c - Atoi 函数无法正确转换字母

标签 c scanf atoi

 printf("Enter a number or type 'Exit' to exit\n");

    long val = 0;
    int y = 3;

    scanf("%s", input);

    val = atoi(input); 


    if (val < y) {

       printf("Hey You!");

    }
    else {
        printf("Error, no such cell exists.\n");
    }

当用户输入“0”、“1”或“2”时,会打印“Hey You”。但是,当用户键入任何字母(例如“y”或“k”)时,也会打印“Hey You”。如何确保仅在低于 3(即 y)的值时打印“Hey You”。

最佳答案

来自 C 标准

If the value of the result cannot be represented, the behaviour is undefined.

可以返回任何值。在您的情况下,该值低于 3。但不能保证。

atoi 如果无法执行转换,则不返回任何特殊值或不设置任何错误变量

关于c - Atoi 函数无法正确转换字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60132256/

相关文章:

c - 为什么 printf() 可以解析变量名以访问存储在其中的值,但 scanf() 不能(在 C 编程中)?

c - 为什么我的小程序崩溃了?

c - 'while' 循环优化太多 - 为什么 nop() 会修复它?

c - C 中的按位运算 |=

c - 第一次 printf 之后它什么也不做(成功编译)

c - atoi 从定义的索引将字符串转换为 char

c - 构建我自己的 scanf 函数

c - 简单的链表程序不起作用

c++ - 奇怪的 C 算术行为

c - 从C中的txt文件中读取链表