这是一个新手问题。要创建格式化的 C 字符串,我使用printf
,例如:
int n = 10;
printf("My number is %i", 10);
但是,怎么样:
int n = 10
char *msg = "My number is %i", 10;
printf(msg);
如何将生成的格式化字符串存储在变量中?我想要“我的号码是 10”。
这是一个新手问题。要创建格式化的 C 字符串,我使用printf
,例如:
int n = 10;
printf("My number is %i", 10);
但是,怎么样:
int n = 10
char *msg = "My number is %i", 10;
printf(msg);
如何将生成的格式化字符串存储在变量中?我想要“我的号码是 10”。
你想使用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.
您正在寻找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);
使用sprintf
:
int n=10
char *msg ="My number is %i";
char bla[32]; // Use an array which is large enough
sprintf(bla, msg, n);
您需要使用类似 sprintf http://www.rohitab.com/discuss/topic/11505-sprintf-tutorial-in-c/
它基本上是这样使用的(记得先 malloc 的 msg 变量)
char* msg;
int ret = sprintf(msg,"My number is %i",10);
printf(msg);