如何在不使用两次 printf 调用的情况下正确进行打印?
char* second = "Second%d";
printf("First%d"second,1,2);
最佳答案
您向我们展示的代码在语法上无效,但我认为您想做一些具有相同效果的事情:
printf("First%dSecond%d", 1, 2);
如您所知,printf
的第一个参数是格式字符串。它不一定是字面意思;您可以按照自己喜欢的方式构建它。
这是一个例子:
#include <stdio.h>
#include <string.h>
int main(void)
{
char *second = "Second%d";
char format[100];
strcpy(format, "First%d");
strcat(format, second);
printf(format, 1, 2);
putchar('\n');
return 0;
}
一些注意事项:
我在输出后添加了换行符。输出文本应该(几乎)总是以换行符结束。
我为格式字符串设置了 100 字节的任意大小。更一般地说,您可以声明
char *format;
并通过调用 malloc()
对其进行初始化,分配您实际需要的大小(并检查 malloc()
没有通过返回 null 来表示失败指针);然后您需要在完成后调用 free(format);
。
正如 templatetypedef 在评论中所说,如果格式字符串来自不受控制的源,这种情况可能存在潜在危险。
(或者您可以调用 printf
两次;这并不比调用一次贵多少。)
关于c - 我怎样才能在c中printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146770/