Mam dwie funkcje, jedną, która generuje komunikaty, Starting initialization...
a drugą, która sprawdza kody powrotu i wyjścia "Ok"
, "Warning"
lub "Error"
. Jednak generowany plik wyjściowy ma inną długość:
Starting initialization...Ok.
Checking init scripts...Ok.
Jak mogę dostać coś takiego:
Starting initialization... Ok.
Checking init scripts... Ok.
c
string
printf
pretty-print
psihodelia
źródło
źródło
-
Twoje dane będą wyjustowane w polu, którego szerokość określiłeś.printf
umożliwia formatowanie za pomocą specyfikatorów szerokości. na przykładprintf( "%-30s %s\n", "Starting initialization...", "Ok." );
Możesz użyć ujemnego specyfikatora szerokości, aby wskazać wyrównanie do lewej, ponieważ domyślnie jest używane wyrównanie do prawej.
źródło
Dodatkowo, jeśli chcesz mieć elastyczność wyboru
width
, możesz wybrać jeden z dwóch następujących formatów (z obcinaniem lub bez):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."
źródło
Jest też
%n
modyfikator, który może pomóc w pewnych okolicznościach. Zwraca kolumnę, w której ciąg był do tej pory. Przykład: chcesz napisać kilka wierszy, które znajdują się w szerokości pierwszego wiersza, tak jak tabela.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]);
wypisze 2 kolumny o tej samej szerokości, niezależnie od długości dwóch ciągów
header1
iheader2
może mieć. Nie wiem, czy wszystkie implementacje mają to,%n
ale Solaris i Linux mają.źródło
Istnieje również mało zaawansowane technologicznie rozwiązanie polegające na liczeniu dodawania spacji ręcznie, aby Twoje wiadomości były wyrównane. Nic nie stoi na przeszkodzie, aby w ciągu wiadomości umieścić kilka spacji na końcu.
źródło
Zacznij od użycia tabulatorów, modyfikatora znaku \ t . Przejdzie do stałej lokalizacji (kolumny, żargon terminala). Jednak to nie pomaga, jeśli są różnice większe niż szerokość kolumny (4 znaki, o ile dobrze pamiętam).
Aby to naprawić, napisz swoje "OK / NOK" używając ustalonej liczby zakładek (5? 6 ?, spróbuj), a następnie zwróć ( \ r ) bez nowej linii i napisz wiadomość.
źródło