如何将整数转换为C中的string?

我试过这个例子:

/* itoa example */ #include <stdio.h> #include <stdlib.h> int main () { int i; char buffer [33]; printf ("Enter a number: "); scanf ("%d",&i); itoa (i,buffer,10); printf ("decimal: %s\n",buffer); itoa (i,buffer,16); printf ("hexadecimal: %s\n",buffer); itoa (i,buffer,2); printf ("binary: %s\n",buffer); return 0; } 

但是那里的例子不起作用(它说itoa不存在的function)

使用sprintf()

 int someInt = 368; char str[12]; sprintf(str, "%d", someInt); 

所有可用int表示的数字都可以放入一个没有溢出的12字符数组中,除非你的编译器在某种程度上使用了超过32位的int 。 当使用更大比特数的数字(例如大多数64位编译器的long数字)时,您需要增加数组大小 – 对于64位types,至less需要21个字符。

制作你自己的itoa也很简单,试试这个:

 #include <stdio.h> char* itoa(int i, char b[]){ char const digit[] = "0123456789"; char* p = b; if(i<0){ *p++ = '-'; i *= -1; } int shifter = i; do{ //Move to where representation ends ++p; shifter = shifter/10; }while(shifter); *p = '\0'; do{ //Move back, inserting digits as u go *--p = digit[i%10]; i = i/10; }while(i); return b; } 

或者使用标准的sprintf()函数。

那是因为itoa不是一个标准function。 试试snprintf

 char str[LEN]; snprintf(str, LEN, "%d", 42);