Domyślnie, printf()
wydaje się dopasowywać łańcuchy w prawo.Łańcuchy centrujące z printf()
printf("%10s %20s %20s\n", "col1", "col2", "col3");
/* col1 col2 col3 */
mogę także wyrównać tekst do lewej tak:
printf("%-10s %-20s %-20s", "col1", "col2", "col3");
Czy istnieje szybki sposób wyśrodkować tekst? Czy muszę napisać funkcję, która zmienia ciąg znaków, taki jak test
w (space)(space)test(space)(space)
, jeśli szerokość tekstu dla tej kolumny wynosi 8?
Pierwsza propozycja: Jak można to impl'd bez wycieku pamięci? – kevinarpe
Jeśli dokonasz wstępnej alokacji niektórych buforów na podstawie pewnych kryteriów, które nie wydają się nierozsądne (na przykład nie więcej niż 20 argumentów zostanie wyśrodkowanych dla jednego printf, a żaden z wyśrodkowanych wyników nie będzie dłuższy niż 200 bajtów), możesz pozwolić centrum funkcja tylko obróć bufory przy każdym wywołaniu. – hlovdal