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