En este post de programación en ANSI C te enseñaré cómo cortar una cadena o mejor dicho cómo extraer parte de una cadena para colocarla en otra cadena.
Para hacer esto en C necesitamos trabajar con apuntadores y con funciones que copian cadenas.
Cortar cadena en C – Algoritmo
Para hacer la extracción debemos saber el índice desde dónde comenzar a cortar, y la cantidad de caracteres que deseamos extraer.
Una vez que sabemos esto podemos usar a strncpy
para copiar datos de una cadena a otra, indicando el apuntador de inicio como la suma del apuntador de la cadena más el índice.
El tercer argumento que recibe strncpy
es la cantidad de bytes que se copian, cosa que indicamos con la cantidad de caracteres que se extraen.
Por cierto, si quieres cortar una cadena a partir de la posición de un elemento, primero necesitas obtener el índice de ese elemento usando strstr y sumarle la longitud de la búsqueda si es necesario.
Extraer subcadena en C
Vamos al grano. El código de ejemplo queda así:
/*
https://parzibyte.me/blog
*/
#include <stdio.h>
#include <string.h>
#define MAXIMA_LONGITUD_CADENA 100
int main(int argc, char const *argv[])
{
char cadena[MAXIMA_LONGITUD_CADENA] = "Luis Cabrera Benito";
// Desde dónde comenzar a cortar
int inicio = 5;
// Cuántos caracteres cortar desde "inicio"
int cantidadCaracteres = 7;
char extraida[MAXIMA_LONGITUD_CADENA] = "";
// Extraer
strncpy(extraida, cadena + inicio, cantidadCaracteres);
printf("Original: '%s'\n", cadena);
printf("Extraída: '%s'\n", extraida);
return 0;
}
Fíjate bien en el código de C. En este caso defino una cadena, luego indico que comenzaré a extraer desde el índice 5, cortando 7 caracteres (voy a extraer la palabra Cabrera
).
La extracción o mejor dicho copia de la subcadena se hace en la línea 17 usando strncpy
indicando que vamos a copiar a extraida
desde cadena + inicio
la cantidad de 7 caracteres.

Puedes observar que la salida es correcta. De este modo es como podemos extraer una subcadena de una cadena. Solo recuerda que la subcadena debe tener suficiente espacio para alojar la cadena extraída, esto se puede asegurar dándole la misma longitud a ambas.
Si quieres puedes ver más sobre programación en C.