2014-10-11 16 views
6

Esiste un modo per stampare una certa quantità di caratteri di spazi bianchi?Stampa caratteri n spazio - (f) formato printf

Non posso usare min. Larghezza dell'imbottitura spazi "\"%-5s\"", perché porterebbe a "str "..., e ho bisogno di uscita "str" ...

So che posso farlo un modo muto:

int len = strlen (str); 

printf ("/"%s/"", str); 
for (int i = len - 5; i > 0; i--) 
    printf (" "); 

Ma mi farebbe piacere soluzione più efficace.

+1

Esattamente quello che mi serve! Grazie mille Per favore, postare come risposta – notnull

risposta

9

Prova

printf ("%*c\"%s\"%*c", leading, ' ', str, trailing, ' '); 

Dove iniziali e finali sono int.
Per dietro solo utilizzare

printf ("\"%s\"%*c", str, trailing, ' '); 

modifica analogo può essere fatto per condurre solo

EDIT
L'identificatore di larghezza permette l'utilizzo di un asterisco per fornire una larghezza variabile.
In questo caso% * c sta dicendo a printf di ottenere l'argomento successivo e usarlo come larghezza per il carattere.
Inizialmente legge e lo utilizza per la larghezza del campo in cui stampare il carattere, un carattere di spazio. Quindi viene stampata una citazione, \ ". Il formato% s stampa l'argomento successivo, str. Viene stampata un'altra citazione e quindi di nuovo% * c legge il testo finale come larghezza per il campo in cui stampare l'argomento successivo, un altro carattere di spazio.

+0

Una spiegazione su come funziona sarebbe bello, sto solo fissando caratteri casuali in questo momento. – Darkhogg

+0

sì, grazie !! – Darkhogg