atoi()从char数组返回0

时间:2012-11-16 17:28:01

标签: c

我正在编写一个程序,其中将stdin读入缓冲区,然后进行处理。绝大多数需要处理的项目是字符串(或者字符串数组)。但是,我确实有一个项目需要作为字符数组读入,然后转换为int以便将来使用。

for(i=0; i<n; i++){
    num[i] = buff[(i)];
    printf("%c", num[i]);
}

convert = atoi(num);

所以我确定正确的字符组被读入num,因为printf是正确的。然而,当我尝试打印转换时,我最终得到0,而且我对我做错了什么感到非常困惑。我知道0返回意味着无法执行有效的转换,但我不知道是什么使它无效。有什么提示吗?

编辑:很抱歉在&gt; _&lt;

之前不包含这些内容

n是buff数组中的字符数 buff是缓冲区数组stdin被读入

1 个答案:

答案 0 :(得分:4)

atoi是一个无法分析错误条件的函数。最重要的是,它会在溢出情况下产生未定义的行为。不要在现实生活中使用atoi(或atofato...组中的任何内容)。它几乎没用。

要执行字符串到数字的转换,请使用strtol(以及strto...组中的其他功能)。

现在,您拨打numatoi内的内容是什么?您的num是否正确归零?