Left-pad printf ze spacjami
Jak mogę wstawić łańcuch ze spacjami po lewej stronie podczas korzystania z printf?
Na przykład chcę wydrukować "Hello" z 40 spacjami przed nim.
Również ciąg, który chcę wydrukować, składa się z wielu linii. Czy muszę drukować każdą linię osobno?
EDIT: żeby było jasne, chcę wydrukować dokładnie 40 spacji przed każdą linią.
4 answers
Jeśli chcesz, aby słowo "Hello" zostało wydrukowane w kolumnie o szerokości 40 znaków ze spacjami po lewej stronie, użyj poniższej opcji.
char *ptr = "Hello";
printf("%40s\n", ptr);
To daje 35 spacji, a następnie słowo "cześć". W ten sposób formatujesz rzeczy, gdy wiesz, jak szeroka ma być kolumna, ale DANE się zmieniają(cóż, jest to Jeden sposób, w jaki możesz to zrobić).
Jeśli wiesz, że chcesz dokładnie 40 spacji, to trochę tekstu, po prostu zapisz 40 spacji w stałej i wydrukuj je. Jeśli chcesz wydrukować wiele linie, albo używają wielu printf
instrukcji, takich jak ta powyżej, albo robią to w pętli, zmieniając wartość ptr
za każdym razem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-16 03:42:40
Używam tej funkcji do wcięcie mojego wyjścia (na przykład do drukowania struktury drzewa). indent
jest liczbą spacji przed łańcuchem.
void print_with_indent(int indent, char * string)
{
printf("%*s%s", indent, "", string);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-01 15:20:50
int space=40;
printf("%*s",space,"Hello");
Ta instrukcja rezerwuje kolumnę 40 znaków, wypisuje łańcuch na końcu kolumny (nie po kolumnie, w ostatnich kolumnach.Łączna liczba użytych kolumn będzie nadal 40). To samo może być używane dla cyfr i liczb całkowitych w następujący sposób
printf("%*d",space,10);
printf("%*c",space,'');
Ta metoda użycia zmiennych spacji jest przydatna w wywołaniach funkcji, gdzie wymagana jest zmienna liczba spacji.Polecenia te będą nadal działać ze stałymi liczbami całkowitymi w następujący sposób
printf("%*d",10,10);
printf("%*c",20,'');
printf("%*s",30,"Hello");
Mam nadzieję, że to pomoże komuś takiemu jak ja w przyszłość.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-28 15:07:43
Jeśli chcesz dokładnie 40 spacji przed łańcuchem, powinieneś po prostu zrobić:
printf(" %s\n", myStr );
Jeśli to jest zbyt brudne, możesz to zrobić (ale będzie to wolniejsze niż ręczne wpisanie 40 spacji):
printf("%40s%s", "", myStr );
Jeśli chcesz, aby ciąg znaków był ustawiony w kolumnie 40 (tzn. miał do 39 spacji, tak aby prawy znak był w kolumnie 40), zrób to:
printf("%40s", myStr);
Można również umieścić "do" 40 spacji po ciągu wykonując:
printf("%-40s", myStr);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-24 21:16:40