我刚刚开始使用 C,我正在尝试学习 ATOL 函数。有人能告诉我为什么它一直打印 0 吗?我知道这意味着无法执行转换,但我不确定为什么。
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int i = atoi (" bl149");
printf("%d\n", i);
return 0;
}
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
你到底有什么不明白的?" bl149"
不是数字的有效表示。因此,在输入错误的情况下,它会像往常一样atoi
返回。0
这里的所有都是它的。
有效的表示可以从一系列空白字符开始,但后面必须跟一个可选+/-
的十进制数字序列。您的空格序列后跟b
. b
不是十进制数字。
你期望它如何工作?在这种情况下,您期望它atoi
做什么?