隐式声明函数'atoi'?

10

使用atoi()函数时,为什么会出现错误?

#include <stdio.h>
#include <string.h>
int main()
{
    char s1[10], s2[10];
    int x=5, y=6, z;
    sprintf(s1, "%d", x);
    sprintf(s2, "%d", y);
    strcat(s1, s2);
    z = atoi(s1);
    printf("%d, %s", z, s1);
    return 0;
}

3
由于 atoi()<stdlib.h> 中声明,正如 man atoi 所述,因此将其视为错误是合理的(确实应该将其视为错误,而不仅仅是警告)。 - Jonathan Leffler
另外:对于32位的intchar s1 [10],s2 [10];数组在整个值范围内都太小而不安全。可能有10个数字、一个减号和一个字符串终止符,总共12个字符。因此,请将它们定义为char s1 [16],s2 [16];,不要太吝啬。 - Weather Vane
1
那么不包含 stdlib.h 的 atoi() 函数是如何编译和运行的呢?有人能解释一下吗? - elig
1个回答

29
#include <stdlib.h>

我会修复它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接