格式字符串说明符中的字符串数

No. of strings in format string specifier

我见过这种在 printf 和 scanf 语句中使用 组合 字符串的方法。

int a;
printf("Printing" "using" "multiple" "strings" "%d", a);
// The above is just an example, some usage that I saw was for printing specific integer types like int_32
// uint32_t var; printf("Value is %" PRTu32, var);

我一直认为我们只能使用单个字符串作为格式说明符。就像 printf 函数的定义中所写的那样,格式似乎只能指向一个字符串。

int printf ( const char * format, ... );

出于好奇,我尝试了以下代码并 运行 成功了!

char arr[] = "Hello " "World";
printf("%s",arr);      // Output - Hello World

谁能解释一下这种连接是如何工作的以及正确的做法是什么。感谢任何帮助。

如果在两个字符串文字之间提供 space 或不提供 space,它将连接字符串文字。

这是 C 特性之一:这是由 ISO C 标准定义的,相邻的字符串文字会自动 combined/concatinated 成为一个。