这是一个新手问题。要创建格式化的C字符串,我使用printf
,如:
int n = 10;
printf("My number is %i", 10);
但是,怎么样:
int n = 10
char *msg = "My number is %i", 10;
printf(msg);
如何将生成的格式化字符串存储在变量中?我想要“我的号码是10”。
答案 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);