Saya memiliki pernyataan berikut:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
Saya ingin memutuskannya. Saya mencoba yang berikut ini tetapi tidak berhasil.
printf("name: %s\t
args: %s\t
value %d\t
arraysize %d\n",
sp->name,
sp->args,
sp->value,
sp->arraysize);
Bagaimana saya bisa memecahnya?
Jawaban:
Jika Anda ingin memecah string literal menjadi beberapa baris, Anda dapat menggabungkan beberapa string menjadi satu, satu di setiap baris, seperti ini:
printf("name: %s\t" "args: %s\t" "value %d\t" "arraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
sumber
Kompiler C dapat merekatkan string literal yang berdekatan menjadi satu, seperti
printf("foo: %s " "bar: %d", foo, bar);
Praprosesor dapat menggunakan garis miring terbalik sebagai karakter terakhir baris, tidak termasuk CR (atau CR / LF, jika Anda berasal dari Windowsland):
printf("foo %s \ bar: %d", foo, bar);
sumber
Hanya beberapa opsi pemformatan lainnya:
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);
Anda dapat menambahkan variasi pada tema. Idenya adalah bahwa
printf()
speficiers konversi dan variabel terkait semuanya berbaris "baik" (untuk beberapa nilai "baik").sumber
Cara standar de-facto untuk membagi fungsi kompleks di C adalah per argumen:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
Atau jika Anda mau:
const char format_str[] = "name: %s\targs: %s\tvalue %d\tarraysize %d\n"; ... printf(format_str, sp->name, sp->args, sp->value, sp->arraysize);
Anda tidak boleh memisahkan string, juga tidak boleh digunakan
\
untuk memutuskan garis C. Kode tersebut dengan cepat berubah menjadi tidak terbaca / tidak dapat dipertahankan.sumber
Saya tidak berpikir menggunakan satu
printf
pernyataan untuk mencetak string literal seperti yang terlihat di atas adalah praktik pemrograman yang baik; melainkan, seseorang dapat menggunakan potongan kode di bawah ini:printf("name: %s\t",sp->name); printf("args: %s\t",sp->args); printf("value: %s\t",sp->value); printf("arraysize: %s\t",sp->name);
sumber