У меня есть простой код - это работает над другими платформами, но не работает в человечности.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x=99;
char str[100];
itoa(99, str, 10);
return 0;
}
Попытка скомпилировать в использовании терминала в gcc с:
gcc test.c
Но я получаю ошибку:
/tmp/ccJN77g6.o: In function `main':
test.c:(.text+0x35): undefined reference to `itoa'
collect2: ld returned 1 exit status
Как же так? прототип для itoa включен в stdlib.h
itoa
не похоже на ANSI C ++ и, следовательно, очень вероятно, что не поддерживается gcc.
Согласно этому источнику , предлагается следующий обходной путь:
This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers. A standard-compliant alternative for some cases may be sprintf: sprintf(str,"%d",value) converts to decimal base. sprintf(str,"%x",value) converts to hexadecimal base. sprintf(str,"%o",value) converts to octal base.
sprintf
ссылку можно найти здесь .
Я использовал введенный вами код и получаю ту же ошибку. Может показаться, что itoa () не является стандартом ANSI C и не работает с GCC в Linux (по крайней мере, в той версии, которую я использую). Такие вещи разочаровывают, особенно если вы хотите, чтобы ваш код работал на разных платформах (Windows / Linux / Solaris / что угодно).
Это не стандартная функция C. Вот несколько ссылок, которые могут помочь вам найти способ обойти функцию:
link1 Вопрос о переполнении стека
Надеюсь, это поможет. [ 115]
itoa
функция не является портативной, нестандартной, и большинство компиляторов Linux не поддерживает его.
Вместо этого необходимо использовать snprintf()
функция
Проверьте snprintf ссылку здесь
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x=99;
char str[100];
// itoa(99, str, 10);
snprintf(str,10,"%d", x);
return 0;
}