Saya memiliki dua fungsi, satu yang menghasilkan pesan suka Starting initialization...
dan yang lainnya yang memeriksa kode dan keluaran yang dikembalikan "Ok"
, "Warning"
atau "Error"
. Namun, keluaran yang dihasilkan memiliki panjang yang berbeda:
Starting initialization...Ok.
Checking init scripts...Ok.
Bagaimana saya bisa mendapatkan sesuatu seperti ini:
Starting initialization... Ok.
Checking init scripts... Ok.
c
string
printf
pretty-print
psihodelia.dll
sumber
sumber
-
, data Anda akan diratakan ke kanan dalam bidang yang lebarnya Anda tentukan.printf
memungkinkan pemformatan dengan penentu lebar. misalnyaprintf( "%-30s %s\n", "Starting initialization...", "Ok." );
Anda akan menggunakan penentu lebar negatif untuk menunjukkan pembenaran kiri karena defaultnya adalah menggunakan pembenaran kanan.
sumber
Selain itu, jika Anda menginginkan fleksibilitas dalam memilih
width
, Anda dapat memilih salah satu dari dua format berikut (dengan atau tanpa pemotongan):int width = 30; //no truncation uses %-*s printf( "%-*s %s\n", width, "Starting initialization...", "Ok." ); // output is "Starting initialization... Ok." //truncated to the specified width uses %-.*s printf( "%-.*s %s\n", width, "Starting initialization...", "Ok." ); // output is "Starting initialization... Ok."
sumber
Ada juga
%n
pengubah yang dapat membantu dalam keadaan tertentu. Ini mengembalikan kolom tempat string itu sejauh ini. Contoh: Anda ingin menulis beberapa baris dengan lebar baris pertama seperti tabel.int width1, width2; int values[6][2]; printf("|%s%n|%s%n|\n", header1, &width1, header2, &width2); for(i=0; i<6; i++) printf("|%*d|%*d|\n", width1, values[i][0], width2, values[i][1]);
akan mencetak 2 kolom lebar yang sama panjang apapun dua string
header1
danheader2
mungkin memiliki. Saya tidak tahu apakah semua implementasi memiliki%n
tetapi Solaris dan Linux melakukannya.sumber
Ada juga solusi berteknologi rendah untuk menghitung penambahan spasi dengan tangan agar pesan Anda sejajar. Tidak ada yang menghalangi Anda untuk memasukkan beberapa spasi tambahan dalam string pesan Anda.
sumber
Mulailah dengan penggunaan Tab, pengubah karakter \ t . Ini akan maju ke lokasi tetap (kolom, istilah terminal). Namun, tidak membantu jika ada perbedaan lebih dari lebar kolom (4 karakter, jika saya ingat dengan benar).
Untuk memperbaikinya, tulis item "OK / NOK" Anda menggunakan jumlah Tab yang tetap (5? 6 ?, coba saja), lalu kembalikan ( \ r ) tanpa baris baru, dan tulis pesan Anda.
sumber