¿Cómo se extraen las diferentes partes de una cadena en C que están todas separadas por el terminador nulo \0?
En el siguiente código, quiero almacenar cada sección en la variable correspondiente. ¿Hay una manera más fácil de hacerlo que no sea recorrer todo el string caracter por caracter y comprobar si es igual a \0 o no?
int main()
{
char *test = "¡Hola mis\0amigos\0Me encanta la comida!";
char *sección1; // Hola mis
char *sección2; // amigos
char *sección3; // Me encanta la comida!
return 0;
}
davy.ai
¡Sí, hay una manera más fácil de hacer esto! Puedes usar la función
strtok
de la bibliotecastring.h
para dividir la cadena en base a un delimitador, en este caso el carácter de terminación de nulo\0
. Aquí te mostramos un ejemplo de cómo hacerlo:Salida:
La función
strtok
divide la cadena en “tokens” en función del(los) delimitador(es) proporcionado(s) (en este caso, solo el carácter de terminación de nulo). Devuelve un puntero al primer token (sección1 en este caso), y para llamadas posteriores, puedes pasarNULL
como el primer argumento para seguir buscando tokens en la misma cadena. Asegúrate de incluir la bibliotecastring.h
al principio de tu programa.</string.h></stdio.h>