c - 奇怪的 C fprintf 格式符号

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

我要问的是关于这一行 "\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/

相关文章:

c - `scanf("%*[^\n]%*c")` 是什么意思?

c++ - 用于打印 0.0、1.0、0.025 的 C/C++ 单一格式说明符

c - 用C中的while替换for循环

c - 如何使用 sprintf 在特定位置写入 C 中的 char 数组?

c++ - 如何通过代理将套接字连接到http服务器?

c - 我正在尝试将 char 打印到输出文件,但是,我的编译器说我正在打印 int

c - 文件并格式化 c 的替代库

c - 为什么不推荐使用带有单个参数(没有转换说明符)的 printf?

无法将 ffmpeg 中的 YUV 帧写入 .yuv 文件

c# - 如何将元素的背景颜色与 2 个半透明元素背景颜色相匹配