函数‘atoi’的隐式声明?

Posted

技术标签:

【中文标题】函数‘atoi’的隐式声明?【英文标题】:implicit declaration of function ‘atoi’? 【发布时间】:2020-10-09 19:05: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;

【问题讨论】:

因为atoi() 是在&lt;stdlib.h&gt; 中声明的,正如man atoi 会告诉你的那样,这是一个合理的错误(实际上,它应该被视为错误,而不仅仅是警告) . 旁白:对于 32 位 intchar s1[10],s2[10]; 数组太小,无法在整个值范围内保持安全。可以有10个数字,一个减号,一个字符串结束符,一共12个。所以定义为char s1[16], s2[16];,不要紧。 那么不包含stdlib.h的atoi()如何编译运行呢?谁能解释一下? 【参考方案1】:
#include <stdlib.h>

会解决的。

【讨论】:

以上是关于函数‘atoi’的隐式声明?的主要内容,如果未能解决你的问题,请参考以下文章

函数'min'的隐式声明

C中函数的隐式声明

函数“等待”的隐式声明

mkstemp 函数的隐式声明

什么是C语言中的隐式函数声明?

警告:函数的隐式声明