如何存储生成的格式化C字符串

时间:2012-04-23 17:49:52

标签: c

这是一个新手问题。要创建格式化的C字符串,我使用printf,如:

int n = 10;
printf("My number is %i", 10);

但是,怎么样:

int n = 10
char *msg = "My number is %i", 10;
printf(msg);

如何将生成的格式化字符串存储在变量中?我想要“我的号码是10”。

4 个答案:

答案 0 :(得分:13)

您想使用snprintf()

int n = 10;
char bla[32];   // Use an array which is large enough 
snprintf(bla, sizeof(bla), "My number is %i", n);

使用sprintf();它类似于snprintf,但不执行任何缓冲区大小检查,因此它被认为是一个安全漏洞 - 当然,您可能总是分配足够的内存,但您可能会在某个时候忘记它,从而打开一个巨大的安全漏洞。

如果您希望该功能为您分配内存,则可以改为使用asprintf()

int n = 10;
char *bla;
asprintf(&bla, "My number is %i", n);
// do something with bla
free(bla); // release the memory allocated by asprintf.

答案 1 :(得分:2)

您正在寻找sprintf()

int ret;
int n=10;
char msg[50];  /* allocate some space for string */

/* Creates string like printf, but stores in msg */
ret = sprintf(msg,"My number is %i",n); 
printf(msg);

答案 2 :(得分:0)

使用sprintf

int n=10
char *msg ="My number is %i";
char bla[32];   // Use an array which is large enough 
sprintf(bla, msg, n);

答案 3 :(得分:0)

你需要使用类似sprintf的东西 http://www.rohitab.com/discuss/topic/11505-sprintf-tutorial-in-c/

它基本上就像这样使用 (记得先将malloc变量用于malloc变量)

char* msg;
int ret = sprintf(msg,"My number is %i",10);
printf(msg);