是否可以在另一个字符串标识符中包含字符串标识符,并打印整个内容?例如:
int main()
{
char *str1 = "%s says:";
char *name = "John";
printf("%s\n", str1, name);
return(0);
}
我的预期输出为John says:
。我怎么印刷或冲刺这样的东西?
答案 0 :(得分:2)
不,printf
无法以这种方式工作。你必须在两个不同的阶段做到这一点:
const char *fmt = "%s says: ";
char result1[SIZE]; // where SIZE is large enough to hold the result
sprintf( result, fmt, "John" ); // result now contains "John says: "
printf( "%s\n", result ); // writes "John says: " to standard output
我必须多次对此进行修改,我需要动态构建格式字符串。这就像它变得容易一样容易。
答案 1 :(得分:1)
了解printf()正在做什么。
printf()会看到"%s"并将其解释为,打印指示的字符串。指示的字符串恰好包含字符"%s":printf()如何知道?它不会自动重新扫描和重新扫描。
有一个循环怎么样。将字符和sprintf()收集到缓冲区中。每一次,如果还有另一个'%'在字符串中,重新应用sprintf()。当你完成后,只需用puts()逐字地转出字符串。