-3

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

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

convert = atoi(num);

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

编辑:抱歉之前没有包括这些>_<

n 是 buff 数组中的字符数 buff 是读取到的缓冲区数组 stdin

4

1 回答 1

4

atoi是一个让您无法分析错误条件的函数。最重要的是,它在溢出情况下会产生未定义的行为。永远不要在现实生活中使用atoi(或小组中的atof任何东西)。ato...它实际上是没有用的。

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

现在,num在你打电话给你的那一刻,你的内心是什么atoi?您的num零终止是否正确?

于 2012-11-16T17:31:21.210 回答