C ошибка: неопределенная ссылка на "itoa"

Я пытаюсь преобразовать целое число в символ записать в файл, используя эту строку:

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

и я получаю это предупреждение и сообщение:

предупреждение: неявное объявление "itoa"

неопределенная ссылка на '_itoa'

Я уже включил stdlib.h, и компилирую с:

gcc -Wall -pedantic -ansi

любая помощь будет оценили, спасибо.

2 ответов


itoa не является частью стандарта. Я подозреваю либо -ansi мешает вам использовать его, или он вообще недоступен.

Я бы предложил использовать sprintf()

если вы идете со стандартом C99, вы можете использовать snprintf() что, конечно, безопаснее.

char buffer[12];
int i = 20;
snprintf(buffer, 12,"%d",i);

здесь говорит вам, что на этапе компиляции itoa неизвестно:

предупреждение: неявное объявление 'сделан вывод о'

поэтому, если эта функция присутствует в вашей системе, вам не хватает файла заголовка, который ее объявляет. Затем компилятор предполагает, что это функция, которая принимает неопределенное количество аргументов и возвращает int.

это сообщение из фазы загрузчика

неопределенная ссылка на '_itoa'

объясняет, что загрузчик также не находит такой функции ни в одной из известных ему библиотек.

Так что вы, возможно, должны следовать совету Брайана, чтобы заменить itoa стандартная функция.