如何将整数转换为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);