9

我正在尝试使用以下行将整数转换为字符以写入文件:

fputc(itoa(size, tempBuffer, 10), saveFile);

我收到此警告和消息:

警告: “itoa”的隐式声明

对“_itoa”的未定义引用

我已经包含了 stdlib.h,并且正在编译:

gcc -Wall -pedantic -ansi

任何帮助将不胜感激,谢谢。

4

2 回答 2

22

itoa不是标准的一部分。我怀疑要么-ansi阻止您使用它,要么根本不可用。

我建议使用sprintf()

如果您使用 c99 标准,您可以使用snprintf()当然更安全的。

char buffer[12];
int i = 20;
snprintf(buffer, 12,"%d",i);
于 2011-03-25T04:48:38.777 回答
2

这里告诉你,在编译阶段itoa是未知的:

警告:“itoa”的隐式声明

因此,如果您的系统上存在此函数,则您缺少声明它的头文件。然后编译器假设它是一个函数,它接受不特定数量的参数并返回一个int.

此消息来自加载器阶段

对“_itoa”的未定义引用

解释说加载器在他知道的任何库中都找不到这样的函数。

因此,您也许应该按照 Brian 的建议用itoa标准函数替换。

于 2011-03-25T07:32:02.277 回答