Функция itoa для C++

Категория: C / C++ Комментариев: 6

В C++ есть хорошая функция atoi для преобразования строки в целое число, а функция для обратного преобразования (из числа в строку) почему-то отсутствует.
Вот лекарство от сего недоразумения:


char* itoa (int n){
 int i=0,j;
 char* s;
 char* u;

 s= (char*) malloc(17);
 u= (char*) malloc(17);

 do{
 s[i++]=(char)( n%10+48 );
 n-=n%10;
 }
 while((n/=10)>0);
 for (j=0;j<i;j++)
 u[i-1-j]=s[j];
 u[j]='\0';
 return u;
}
Автор: Кто-то   @   3 мая 2010 Комментариев: 6
Метки : , ,

Поблагодарить автора

Webmoney Z163628999150, R617151845974

Комментариев: 6

Комментарии
мая 11, 2010
8:17
#1 Kek :

Может, я чего-то не понимаю, но кто будет вызывать free для выделенной malloc памяти? А в случае с char* s, как вообще это сделать вне функции? Без дополнительных средств, вроде как меморилик выходит

Автор мая 12, 2010
20:56

Можно передавать в функцию указатель на char для записи результата, как и принято в C. Тогда и освобождать его можно будет спокойно за пределами функции.

июня 15, 2010
1:07

Прошу прощения, а sprintf () религия не позволяет использовать?

Автор июня 15, 2010
22:00

Если подключить к проекту stdlib по каким-то причинам нельзя, то нет, не позволяет :D

Сен 12, 2010
0:08
#5 БЛАДЖ :

Вы долбаёбы, есть там такая функция!!!!!!!!111111111111111

Автор Сен 15, 2010
19:48

ага, а К.О. говорит, что она не входит в текущий стандарт C++, и скорее всего не входит в POSIX-2001.1.

оставить комментарий

Предыдущая запись
«
Следующая запись
»