私は次の声明を持っています:
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);
どうすれば分割できますか?
文字列リテラルを複数の行に分割する場合は、次のように、各行に1つずつ、複数の文字列を連結できます。
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()
変換スペシフィアとそれぞれの変数がすべて「きちんと」並んでいるということです(「きちんと」のいくつかの値に対して)。
Cコンパイラは、次のように、隣接する文字列リテラルを1つに接着できます。
printf("foo: %s "
"bar: %d", foo, bar);
プリプロセッサは、CR(またはWindowslandの場合はCR/LF)をカウントせずに、行の最後の文字としてバックスラッシュを使用できます。
printf("foo %s \
bar: %d", foo, bar);
上記のように1つの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);
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行を分割したりしないでください。そのようなコードはすぐに完全に判読不能/保守不能になります。