2011-10-20 16 views
7

Mam ciąg const char[15] i chcę wydrukować go tak:Jak wydrukować tylko niektóre części napisu?

Label-on: znaków [0,13)
Label dwa: znaków [13, 15)

Jak mogę wydrukować tylko niektóre części napisu?

+0

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

Odpowiedz

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

Zauważyłem możliwy błąd/niezgodność ze słupem ogrodzeniowym w pytaniu lub mojej odpowiedzi, w zależności od twojego punktu widzenia. Prawidłowa odpowiedź na drugi przykład mogą być:

printf("%.3s", &labelOne[ 12 ]); 
+3

Mała rada stylistyczna: 'labelOne + 13' wydaje się bardziej naturalny i bardziej naturalny niż '& labelOne [13]'. –

+0

@Blagovest - Przypuszczam, że siła przyzwyczajenia. Wracam do tej kwestii i do twojego punktu, twój format jest dziś znacznie bardziej powszechny. Kiedy zacząłem rozwijać się przez te wszystkie lata, format & str [offset] wydawał się bardziej powszechny. –

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

@ odpowiedź Boba jest również dopuszczalne, jeżeli te odcinki są stałe, ale w przypadku długości są określane w czasie wykonywania, jest to najlepsze podejście, ponieważ parametrises im.

Powiązane problemy