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

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) );

我要问的是这行"\n%s %3c %12s %2c %12s %2c %12s %2c %12s %2c" "%12s %2c %12s",我什至不知道该如何编译,因为我从未见过像这样的两种格式相互遵循。谢谢你的帮助。

最佳答案

这些不是两种格式-请注意缺少逗号,或除空格以外将它们分开的任何方式。这是用于长字符串继续的C语法。在C中,这些等效:

"abc" "def"
"abcdef"

注意,这仅适用于字符串文字。您不能串联字符串变量。这是语法错误:
string1 string2

关于c - 奇怪的C fprintf格式表示法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10585712/

10-10 07:44