Stampa pad sinistro con spazi
-
08-07-2019 - |
Domanda
Come posso riempire una stringa con spazi a sinistra quando uso printf?
Ad esempio, voglio stampare " Ciao " con 40 spazi che lo precedono.
Inoltre, la stringa che voglio stampare è composta da più righe. Devo stampare ciascuna riga separatamente?
EDIT: solo per essere chiari, voglio esattamente 40 spazi stampati prima di ogni riga.
Soluzione
Se vuoi la parola " Ciao " per stampare in una colonna larga 40 caratteri, con spazi che riempiono la parte sinistra, utilizzare quanto segue.
char *ptr = "Hello";
printf("%40s\n", ptr);
Questo ti darà 35 spazi, quindi la parola " Ciao " ;. Ecco come formattare le cose quando sai quanto vuoi la colonna, ma i dati cambiano (beh, è ?? uno il modo in cui puoi farlo).
Se sai che vuoi esattamente 40 spazi, allora del testo, salva i 40 spazi in una costante e stampali. Se è necessario stampare più righe, utilizzare più istruzioni printf
come quella sopra oppure farlo in un ciclo, modificando ogni volta il valore di ptr
.
Altri suggerimenti
Uso questa funzione per indentare il mio output (ad esempio per stampare una struttura ad albero). indent
è il numero di spazi prima della stringa.
void print_with_indent(int indent, char * string)
{
printf("%*s%s", indent, "", string);
}
int space = 40;
printf("%*s", space, "Hello");
Questa affermazione riserverà una riga di 40 caratteri, stampa una stringa alla fine della riga (rimuovendo gli spazi extra in modo tale che la lunghezza totale della riga sia costante a 40). Lo stesso può essere usato per caratteri e numeri interi come segue:
printf("%*d", space, 10);
printf("%*c", space, 'x');
Questo metodo che utilizza un parametro per determinare gli spazi è utile quando è richiesto un numero variabile di spazi. Queste dichiarazioni continueranno a funzionare con valori letterali interi come segue:
printf("%*d", 10, 10);
printf("%*c", 20, 'x');
printf("%*s", 30, "Hello");
Spero che questo aiuti qualcuno come me in futuro.
Se vuoi esattamente 40 spazi prima della stringa, dovresti semplicemente fare:
printf(" %s\n", myStr );
Se è troppo sporco, puoi farlo (ma sarà più lento della digitazione manuale dei 40 spazi):
printf ("% 40s% s " ;, " " ;, myStr);
Se si desidera allineare la stringa nella colonna 40 (ovvero, avere fino a 39 spazi procedendo in modo tale che il carattere più a destra sia nella colonna 40) quindi procedere come segue:
printf ("% 40s " ;, myStr);
Puoi anche inserire " fino a " 40 spazi dopo la stringa facendo:
printf ("% - 40s " ;, myStr);