在标准C中将int转换为char*(不使用itoa)

Ale*_*nea 3 c int char itoa

我已经声明并初始化了两个变量,如下所示:

int a=5;
char* str;
str = (char*)calloc(255, sizeof(char));
Run Code Online (Sandbox Code Playgroud)

我想在标准C中将int转换为char*.我不能使用C++中的任何转换函数,例如itoa.

我正在使用Ubuntu 11.10

Thi*_*ter 15

首先,itoa它不是C++的东西.

你可以简单地使用sprintf:

sprintf(str, "%d", a)
Run Code Online (Sandbox Code Playgroud)

在实际应用程序中,您将要使用snprintf以消除缓冲区溢出的风险:

str = malloc(16);
snprintf(str, 16, "%d", a);
Run Code Online (Sandbox Code Playgroud)

15个字符足以存储整数.

  • `sizeof(char)`每个定义等于1,而`calloc`是矫枉过正的.而且,从`calloc`转换结果是没用的.只需`str = malloc(BUFSIZE)`即可. (3认同)
  • 答案是正确的,但我不会提到`sprintf`的存在.你为一个真正的应用程序建议`snprintf`是好的,但为什么不把它用于"不真实"的应用程序呢? (2认同)