奇怪的C fprintf格式表示法

jn1*_*1kk 2 c printf format-specifiers

当我注意到这段代码时,试图弄清楚函数中的堆栈损坏错误:

fprintf( fp, "\n%s %3c %12s %2c %12s %2c %12s %2c %12s %2c"
             "%12s %2c %12s", 
             xys_field[3],      x,
             xyzFunc(val1, 0),  x, 
             xyzFunc(val2, 0),  x, 
             xyzFunc(val3, 0),  x,
             xyzFunc(val4, 0),  x, 
             xyzFunc(val5, 0),  x, 
             xyzFunc(val6,0) );
Run Code Online (Sandbox Code Playgroud)

我问的是关于这一行"\n%s %3c %12s %2c %12s %2c %12s %2c %12s %2c" "%12s %2c %12s",我甚至不明白这是如何编译的,因为我从未见过两种格式如此相互跟随.谢谢你的帮助.

Ama*_*dan 6

这些不是两种格式 - 注意没有逗号,或者除了空格之外的任何东西.这是用于延续长字符串的C语法.在C中,这些是等价的:

"abc" "def"
"abcdef"
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于字符串文字; 你不能连接字符串变量.这是语法错误:

string1 string2
Run Code Online (Sandbox Code Playgroud)