我有以下声明:
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);
我该如何分手?
答案 0 :(得分:148)
如果要将字符串文字分成多行,可以将多个字符串连接在一起,每行一个,如下所示:
printf("name: %s\t"
"args: %s\t"
"value %d\t"
"arraysize %d\n",
sp->name,
sp->args,
sp->value,
sp->arraysize);
答案 1 :(得分:19)
其他一些格式选项:
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和各自的变量都排成一行“很好”(对于某些“很好”的值)。
答案 2 :(得分:17)
C编译器可以将相邻的字符串文字粘合成一个,如
printf("foo: %s "
"bar: %d", foo, bar);
预处理器可以使用反斜杠作为行的最后一个字符,不计算CR(或CR / LF,如果您来自Windowsland):
printf("foo %s \
bar: %d", foo, bar);
答案 3 :(得分:3)
我不认为使用一个printf
语句打印字符串文字,如上所示是一个很好的编程习惯;相反,人们可以使用下面的代码:
printf("name: %s\t",sp->name);
printf("args: %s\t",sp->args);
printf("value: %s\t",sp->value);
printf("arraysize: %s\t",sp->name);
答案 4 :(得分:3)
在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);
您不应该拆分字符串,也不应该使用\
来破坏C行。这样的代码很快变得完全不可读/不可维护。