J'ai la déclaration suivante:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
Je veux rompre. J'ai essayé ce qui suit mais ça ne marche pas.
printf("name: %s\t
args: %s\t
value %d\t
arraysize %d\n",
sp->name,
sp->args,
sp->value,
sp->arraysize);
Comment puis-je le casser?
Si vous souhaitez séparer un littéral de chaîne en plusieurs lignes, vous pouvez concaténer plusieurs chaînes, une sur chaque ligne, comme suit:
printf("name: %s\t"
"args: %s\t"
"value %d\t"
"arraysize %d\n",
sp->name,
sp->args,
sp->value,
sp->arraysize);
Juste quelques autres options de formatage:
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);
Vous pouvez ajouter des variations sur le thème. L'idée est que les speficiers de conversion printf()
et les variables respectives sont tous alignés "joliment" (pour certaines valeurs de "joliment").
Le compilateur C peut coller des littéraux de chaîne adjacents en un seul, comme
printf("foo: %s "
"bar: %d", foo, bar);
Le préprocesseur peut utiliser une barre oblique inversée comme dernier caractère de la ligne, sans compter le CR (ou le CR/LF, si vous êtes originaire de Windows):
printf("foo %s \
bar: %d", foo, bar);
Je ne pense pas que l'utilisation d'une instruction printf
pour imprimer des littéraux de chaîne, comme indiqué ci-dessus, soit une bonne pratique de programmation; au lieu de cela, on peut utiliser le morceau de code ci-dessous:
printf("name: %s\t",sp->name);
printf("args: %s\t",sp->args);
printf("value: %s\t",sp->value);
printf("arraysize: %s\t",sp->name);
La méthode standard de facto pour scinder les fonctions complexes en C est par argument:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n",
sp->name,
sp->args,
sp->value,
sp->arraysize);
Ou si vous voulez:
const char format_str[] = "name: %s\targs: %s\tvalue %d\tarraysize %d\n";
...
printf(format_str,
sp->name,
sp->args,
sp->value,
sp->arraysize);
Vous ne devriez pas séparer la chaîne, vous ne devriez pas utiliser \
pour casser une ligne C. Un tel code devient rapidement complètement illisible/incontrôlable.