Cómo obtener subcadena en C

Tengo una cadena, digamos “THESTRINGHASNOSPACES”.

Necesito algo que obtenga una subcadena de 4 caracteres de la cadena. En la primera llamada, debería obtener “THES”; en el segundo, debería obtener “TRIN”; en el tercero, debería obtener “GHAS”. ¿Cómo puedo hacer eso en C?

Si la tarea solo copia 4 caracteres, intente con los bucles. Si va a ser más avanzado y está pidiendo una función, intente con strncpy. http://www.cplusplus.com/reference/clibrary/cstring/strncpy/

strncpy(sub1, baseString, 4); strncpy(sub1, baseString+4, 4); strncpy(sub1, baseString+8, 4); 

o

 for(int i=0; i<4; i++) sub1[i] = baseString[i]; sub1[4] = 0; for(int i=0; i<4; i++) sub2[i] = baseString[i+4]; sub2[4] = 0; for(int i=0; i<4; i++) sub3[i] = baseString[i+8]; sub3[4] = 0; 

Prefiero strncpy si es posible.

 #include  #include  int main() { char src[] = "SexDrugsRocknroll"; char dest[5] = { 0 }; // 4 chars + terminator */ int len = strlen(src); int i = 0; while (i*4 < len) { strncpy(dest, src+(i*4), 4); i++; printf("loop %d : %s\n", i, dest); } } 

Si solo quieres imprimir las subcadenas …

 char s[] = "THESTRINGHASNOSPACES"; size_t i, slen = strlen(s); for (i = 0; i < slen; i += 4) { printf("%.4s\n", s + i); } 
 char originalString[] = "THESTRINGHASNOSPACES"; char aux[5]; int j=0; for(int i=0;i