字符串标识在另一个字符串

时间:2016-08-02 21:48:17

标签: c string

是否可以在另一个字符串标识符中包含字符串标识符,并打印整个内容?例如:

int main()
{
    char *str1 = "%s says:";
    char *name = "John";
    printf("%s\n", str1, name);
    return(0);
}

我的预期输出为John says:。我怎么印刷或冲刺这样的东西?

2 个答案:

答案 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()逐字地转出字符串。