在C中,一个很长的printf语句可以分成多行?

我有以下陈述:

printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize); 

我想分解它。 我尝试了以下,但它不起作用。

 printf("name: %s\t args: %s\t value %d\t arraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize); 

我怎样才能分解它?

如果你想把一个string文字分解成多行,你可以将多个string连接在一起,每行一个,如下所示:

 printf("name: %s\t" "args: %s\t" "value %d\t" "arraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize); 

只是其他一些格式选项:

 printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", a, b, c, d); printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", a, b, c, d); printf("name: %s\t" "args: %s\t" "value %d\t" "arraysize %d\n", very_long_name_a, very_long_name_b, very_long_name_c, very_long_name_d); 

您可以在主题上添加变体。 这个想法是, printf()转换speficiers和各自的variables都“很好”排列(对于一些“好”的价值)。

C编译器可以将相邻的string文字粘贴到一起,如

 printf("foo: %s " "bar: %d", foo, bar); 

预处理器可以使用反斜杠作为行的最后一个字符,不计算CR(或CR / LF,如果来自Windowsland):

 printf("foo %s \ bar: %d", foo, bar); 

按照事实标准的方式来分解C中的复杂函数是每个参数:

 printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize); 

或者如果您会:

 const char format_str[] = "name: %s\targs: %s\tvalue %d\tarraysize %d\n"; ... printf(format_str, sp->name, sp->args, sp->value, sp->arraysize); 

你不应该分割string,也不应该使用\来分割C行。 这样的代码很快变成完全不可读/不可维护的。

我不认为使用一个printf语句来打印string文字是一个很好的编程习惯; 相反,可以使用下面的代码片段:

 printf("name: %s\t",sp->name); printf("args: %s\t",sp->args); printf("value: %s\t",sp->value); printf("arraysize: %s\t",sp->name);