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.

È stato utile?

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);

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top