2011-10-20 20 views
7

Ben bir dize const char[15] var ve böyle yazdırmak istiyorum:Dizenin yalnızca belirli bölümleri nasıl yazdırılır?

Etiket-one: karakter [0,13)
Etiket-iki: karakter [13, 15)

Dizenin yalnızca belirli bölümlerini nasıl yazdırabilirim?

+0

http://stackoverflow.com/questions/256218/the-simplest-way-of-printing-a-portion-of-a-char-in-c –

cevap

8
printf("%.13s", labelOne); // stops after thirteen characters. 
printf("%.3s", &labelOne[ 13 ]); // prints three characters of the string that starts at offset 13 

Ben sizin bakış bağlı olarak sorunuzun ya da benim cevap olası bir fencepost hata/tutarsızlığı fark ediyorum. İkinci örnek için doğru cevap olabilir: bu parametrises çünkü bu uzunluklar, sabit ise

printf("%.3s", &labelOne[ 12 ]); 
Bob yanıt @
+3

Küçük bir stilistik tavsiye: 'labelOne + 13' gibi görünüyor & ve labelOne [13] 'den daha doğal ve daha doğal. –

+0

@Blagovest - Alışkanlık gücünün herhalde. Konuyla ilgili ileri geri gittim ve sizin amacınıza göre, bugün sizin formatınız çok daha yaygın. C yıllarında bu gelişmeye başladığımda, & str [offset] formatı daha sık göründü. –

13
printf("Label-one: %.*s", 13, str); 
printf("Label-two: %.*s", 2, str + 13); 

da kabul edilebilir, ama durumda uzunlukları zamanında tespit edilir, bu en iyi yaklaşım onlar.

İlgili konular