es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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;
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    ¡Sí, hay una manera más fácil de hacer esto! Puedes usar la función strtok de la biblioteca string.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:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char *test = "¡Hola Mi\0amigos\0Me encanta la comida!";
    
        char *seccion1 = strtok(test, "\0");
        char *seccion2 = strtok(NULL, "\0");
        char *seccion3 = strtok(NULL, "\0");
    
        printf("Sección 1: %s\n", seccion1);
        printf("Sección 2: %s\n", seccion2);
        printf("Sección 3: %s\n", seccion3);
    
        return 0;
    }
    

    Salida:

    Sección 1: ¡Hola Mi
    Sección 2: amigos
    Sección 3: Me encanta la comida!
    

    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 pasar NULL como el primer argumento para seguir buscando tokens en la misma cadena. Asegúrate de incluir la biblioteca string.h al principio de tu programa.</string.h></stdio.h>

Comments are closed.