2014-10-11 14 views
6

Belirli miktarda boşluk karakterini basmanın herhangi bir yolu var mı?N boşluk karakterlerini yazdır - (f) printf formatı

Min.

int len = strlen (str); 

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

Ama daha etkili çözüm takdir ediyorum: genişlik boşluk dolgu "\"%-5s\"", bu "str "... için neden olacaktır ve ben çıkış "str" ...

gerek çünkü bunu bir dilsiz yol yapabileceğini biliyorum. ön ve arka int nerede

+1

Tam olarak neye ihtiyacım var Çok teşekkür ederim Lütfen yanıt olarak gönderin – notnull

cevap

9

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

inceleyin. kullanımı sadece

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

Benzer modifikasyonu arka için
sadece

DÜZENLEME
genişliği belirteci değişken bir genişliğe sağlamak için bir yıldız işareti kullanımına izin lider için yapılabilir.
Bu durumda% * c, sonraki argümanı almak için printf'e yazarak karakterin genişliği olarak kullanır.
Öncelikle önder okur ve karakterin yazdırılacağı alanın genişliği için bir boşluk karakteri kullanır. Sonra bir alıntı yazdırılır, \ ".% S formatı bir sonraki argümanı yazdırır, str. Başka bir alıntı yazdırılır ve sonra tekrar% * c, bir sonraki argümanın basılacağı alanın genişliği olarak başka bir boşluk karakteri olarak okur.

+0

Bunun nasıl işe yaradığını anlatan bir açıklama, şu an sadece rastgele karakterlere bakıyorum – Darkhogg

+0

evet, teşekkürler! – Darkhogg

İlgili konular