我正在编写一个程序,其中将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被读入
答案 0 :(得分:4)
atoi
是一个无法分析错误条件的函数。最重要的是,它会在溢出情况下产生未定义的行为。不要在现实生活中使用atoi
(或atof
或ato...
组中的任何内容)。它几乎没用。
要执行字符串到数字的转换,请使用strtol
(以及strto...
组中的其他功能)。
现在,您拨打num
时atoi
内的内容是什么?您的num
是否正确归零?