我正在尝试使用以下行将整数转换为字符以写入文件:
fputc(itoa(size, tempBuffer, 10), saveFile);
我收到此警告和消息:
警告: “itoa”的隐式声明
对“_itoa”的未定义引用
我已经包含了 stdlib.h,并且正在编译:
gcc -Wall -pedantic -ansi
任何帮助将不胜感激,谢谢。
itoa
不是标准的一部分。我怀疑要么-ansi
阻止您使用它,要么根本不可用。
我建议使用sprintf()
如果您使用 c99 标准,您可以使用snprintf()
当然更安全的。
char buffer[12];
int i = 20;
snprintf(buffer, 12,"%d",i);
这里告诉你,在编译阶段itoa
是未知的:
警告:“itoa”的隐式声明
因此,如果您的系统上存在此函数,则您缺少声明它的头文件。然后编译器假设它是一个函数,它接受不特定数量的参数并返回一个int
.
此消息来自加载器阶段
对“_itoa”的未定义引用
解释说加载器在他知道的任何库中都找不到这样的函数。
因此,您也许应该按照 Brian 的建议用itoa
标准函数替换。