如何将整型(整数)转换为字符串?

我试图使一个函数转换成一个字符串的结构数据保存在文件中。


当前回答

你可以用sprintf来做,如果你有snprintf也可以:

char str[ENOUGH];
sprintf(str, "%d", 42);

str中的字符数(加上终止字符)可以使用以下方法计算:

(int)((ceil(log10(num))+1)*sizeof(char))

其他回答

你可以用sprintf来做,如果你有snprintf也可以:

char str[ENOUGH];
sprintf(str, "%d", 42);

str中的字符数(加上终止字符)可以使用以下方法计算:

(int)((ceil(log10(num))+1)*sizeof(char))

正如评论中指出的,itoa()不是标准,所以最好使用竞争对手回答中建议的sprintf()方法!


可以使用itoa()函数将整数值转换为字符串。

这里有一个例子:

int num = 321;
char snum[5];

// Convert 123 to string [buf]
itoa(num, snum, 10);

// Print our string
printf("%s\n", snum);

如果你想把你的结构输出到一个文件中,不需要事先转换任何值。您可以只使用printf格式规范来指示如何输出值,并使用printf系列中的任何操作符来输出数据。

简单的回答是:

snprintf( str, size, "%d", x );

较长的是:首先你需要找到足够的大小。snprintf告诉你长度,如果你用NULL, 0作为第一个参数调用它:

snprintf( NULL, 0, "%d", x );

为空结束符再分配一个字符。

#include <stdio.h> 
#include <stdlib.h>

int x = -42;
int length = snprintf( NULL, 0, "%d", x );
char* str = malloc( length + 1 );
snprintf( str, length + 1, "%d", x );
...
free(str);

If适用于所有格式字符串,因此可以使用“%g”将浮点数或双精度浮点数转换为字符串,使用“%x”将int数转换为十六进制,等等。

还有另一种方法。

#include <stdio.h>

#define atoa(x) #x

int main(int argc, char *argv[])
{
    char *string = atoa(1234567890);
    printf("%s\n", string);
    return 0;
}

使用函数itoa()将整数转换为字符串

例如:

char msg[30];
int num = 10;
itoa(num,msg,10);