Проблема с преобразованием целого числа в строку - PullRequest
2 голосов
/ 07 апреля 2011

Возможно, это не очень важный вопрос, но он только начинается в ц.Почему это не скомпилируется правильно?

#include <stdio.h>
#include <stdlib.h>

void main()
{
int i = 15;
char word[100];

itoa (i,word,10);

printf("After conversion, int i = %d, char word = %s", i, word);
}

Я получаю сообщение об ошибке

Undefined symbols:
"_itoa", referenced from:
_main in ccubsVbJ.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Ответы [ 2 ]

6 голосов
/ 07 апреля 2011

Используйте вместо этого sprintf, itoa не является частью стандарта C и, вероятно, не включен в вашу реализацию stdlib.

sprintf(word,"%d",i);

ОБНОВЛЕНИЕ:

Как отмечено в комментариях, snprintf безопаснееиспользовать, чтобы избежать переполнения буфера.В этом случае это не нужно, потому что ваш буфер длиннее, чем наибольшее целое число, которое может быть сохранено в 32-битном (или 64-битном целом).Но хорошо иметь в виду переполнение буфера.

2 голосов
/ 07 апреля 2011

itoa - это нестандартная функция, возможно, она не включена в вашу реализацию. Вместо этого используйте что-то вроде sprintf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...