Tenho a seguinte declaração:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
Eu quero acabar com isso. Tentei o seguinte, mas não funcionou.
printf("name: %s\t
args: %s\t
value %d\t
arraysize %d\n",
sp->name,
sp->args,
sp->value,
sp->arraysize);
Como posso separar?
Respostas:
Se quiser quebrar um literal de string em várias linhas, você pode concatenar várias strings, uma em cada linha, assim:
printf("name: %s\t" "args: %s\t" "value %d\t" "arraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
fonte
O compilador C pode colar literais de string adjacentes em um, como
printf("foo: %s " "bar: %d", foo, bar);
O pré-processador pode usar uma barra invertida como último caractere da linha, sem contar CR (ou CR / LF, se você for do Windowsland):
printf("foo %s \ bar: %d", foo, bar);
fonte
Apenas algumas outras opções de formatação:
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);
Você pode adicionar variações sobre o tema. A ideia é que os
printf()
speficiers de conversão e as respectivas variáveis estejam todos alinhados "bem" (para alguns valores de "bem").fonte
A maneira padrão de fato para dividir funções complexas em C é por argumento:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
Ou se você:
const char format_str[] = "name: %s\targs: %s\tvalue %d\tarraysize %d\n"; ... printf(format_str, sp->name, sp->args, sp->value, sp->arraysize);
Você não deve dividir a string, nem deve usar
\
para quebrar uma linha C. Esse código rapidamente se torna completamente ilegível / impossível de manter.fonte
Não acho que usar uma
printf
instrução para imprimir literais de string como visto acima seja uma boa prática de programação; em vez disso, pode-se usar o trecho de código abaixo:printf("name: %s\t",sp->name); printf("args: %s\t",sp->args); printf("value: %s\t",sp->value); printf("arraysize: %s\t",sp->name);
fonte