C Ошибка: undefined ссылка на '_itoa'

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

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

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

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

undefined ссылка на '_itoa'

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

gcc -Wall -pedantic -ansi

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

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

undefined ссылка на '_itoa'

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

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