函数‘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()
是在<stdlib.h>
中声明的,正如man atoi
会告诉你的那样,这是一个合理的错误(实际上,它应该被视为错误,而不仅仅是警告) .
旁白:对于 32 位 int
,char s1[10],s2[10];
数组太小,无法在整个值范围内保持安全。可以有10个数字,一个减号,一个字符串结束符,一共12个。所以定义为char s1[16], s2[16];
,不要紧。
那么不包含stdlib.h的atoi()如何编译运行呢?谁能解释一下?
【参考方案1】:
#include <stdlib.h>
会解决的。
【讨论】:
以上是关于函数‘atoi’的隐式声明?的主要内容,如果未能解决你的问题,请参考以下文章