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