1

我刚刚开始使用 C,我正在尝试学习 ATOL 函数。有人能告诉我为什么它一直打印 0 吗?我知道这意味着无法执行转换,但我不确定为什么。

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
    int i = atoi ("  bl149");
    printf("%d\n", i);  
    return 0;
}
4

2 回答 2

5

atoi 基本上将具有数字的字符串转换为整数 1,并且它将转换的任何内容都将成为它的返回值。或者更准确地说,atoi 函数从字符串的开头开始检查。如果它有数字(仅从开头),那么它将以整数形式返回该值。下面的例子将清楚这个概念 例如

atoi("1234") 
--> it will convert string "1234" in to integer and return it 
         --> i.e. ouput is 1234
atoi("1234abcd") --> i.e. ouput is 1234
atoi("a1234abcd") --> i.e. ouput is 0   

在您的情况下,因为您的字符串从 b (" b1149") 开始,所以它将返回 0

于 2012-12-07T09:10:10.467 回答
2

你到底有什么不明白的?" bl149"不是数字的有效表示。因此,在输入错误的情况下,它会像往常一样atoi返回。0这里的所有都是它的。

有效的表示可以从一系列空白字符开始,但后面必须跟一个可选+/-的十进制数字序列。您的空格序列后跟b. b不是十进制数字。

你期望它如何工作?在这种情况下,您期望它atoi做什么?

于 2012-12-07T07:00:25.070 回答