LINUX.ORG.RU

Преобразование int в char


0

0

Как преобразовать в С значение int в строку? Т.е есть у меня допустим цифра 1024 и она хранится в int, как это преобразовать в ascii? Вот так понятнее будет: int c=1024; -> char symbol[]="1024"; Что то голову себе поломал уже %))

anonymous

char str[64];
sprintf(str, "%d", num);

P.S. snprintf надежнее.

anonymous
()

sprintf 8-)

anonymous
()

char *lltostr((long long)1024,*suda_poluchaem_stroky_ne_doljen_bit_NULL);

anonymous
()

sprintf() вполне проканает, но довольно медленна.

Пример шустрой функции:

static char integers[10]={'0','1','2','3','4','5','6','7','8','9'};

/*converts long to a string representation and returns it:*/
char *long2str(char *buf, long n)
{
char tmp[21];/* This is a stack. 64/Log_2[10] = 19.3, so this is enough forever...*/

register char *bufptr=buf, *tmpptr=tmp+1;/*tmp[0] is a terminator ('\0')*/

   if(n<0){/*Swap the sign and store '-':*/
      n=-n;
      *bufptr++='-';
   }/*if(n<0)*/
      
   *tmp='\0';/*Set the terminator*/
      
   /*Fill up the stack:*/
   do
     *tmpptr++=integers[n%10];
   while( (n=n/10)!=0 );
      
   /*Copy the stack to the output buffer:*/
   while( (*bufptr++ = *--tmpptr)!='\0' );
   return buf;
}/*long2str*/

Die-Hard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.