80 votes

En C peut une longue instruction printf être divisée en plusieurs lignes?

J'ai fait la déclaration suivante:

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

Je tiens à le briser. J'ai essayé ce qui suit, mais ça ne fonctionne 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 briser?

166voto

James McNellis Points 193607

Si vous voulez briser un littéral de chaîne sur plusieurs lignes, vous pouvez concaténer plusieurs cordes en même temps, un sur chaque ligne, comme ceci:

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

20voto

pmg Points 52636

Juste quelques autres options de mise en forme:

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 l' printf() de conversion speficiers et les variables respectives sont tous alignés "bien" (pour certaines valeurs de "bien").

19voto

qrdl Points 17813

Le compilateur C permet de colle adjacentes littéraux de chaîne en un seul, comme

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

Le préprocesseur pouvez utiliser une barre oblique inverse comme un dernier caractère de la ligne, sans compter la CR (ou CR/LF, si vous êtes de Windowsland):

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

0voto

Crescent Moon Points 347

Comment à ce sujet:

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

Vous pouvez utiliser de nouvelle ligne (\n) pour obtenir ce que vous voulez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X