2011-10-20 10 views
7

tengo una cadena const char[15] y quiero imprimir de esta manera:¿Cómo se imprimen solo ciertas partes de una cadena?

Label-uno: caracteres [0,13)
etiqueta de dos: caracteres [13, 15)

¿Cómo puedo imprimir solo ciertas partes de la cadena?

+0

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

Respuesta

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

estoy notando un posible error poste de alambrado/inconsistencia en su pregunta o mi respuesta, dependiendo de su punto de vista. La respuesta correcta para el segundo ejemplo puede ser:

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

Un pequeño consejo estilístico: 'labelOne + 13' parece más limpio y más natural que '& labelOne [13]'. –

+0

@Blagovest - Fuerza del hábito, supongo. He estado yendo y viniendo sobre el tema, y ​​para su punto, su formato es mucho más común hoy. Cuando comencé a desarrollar en C lo por muchos años, el formato & str [offset] parecía ser más común. –

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

@ respuesta de Bob también es aceptable si estas longitudes son constantes, pero en caso de las longitudes se determinan en tiempo de ejecución, este es el mejor enfoque, ya que parametrises ellos.

Cuestiones relacionadas