• # il faut passer le tableau en reference

    Posté par . En réponse au message Extraction sous-chaînes. Évalué à 2.

    tu ne peux pas recuperer le tableau depuis la fonctions : qd tu sors de msg_intercept () , le tableau n'existe plus.
    il faut le passer en parametre ainsi que sa taille.

    #include <string.h>
    #include <stdlib.h>
    void msg_intercept(char * msg, char * del, char ** tab, int nbr){

    char * p;

    int i;

    printf ("msg_intercept nbr=%d\n", nbr);
    printf ("msg_intercept tab=%d\n", sizeof(tab));

    p = strtok(msg, del);

    if (p != NULL) {

    puts(p);

    tab[0] = p;

    for(i=1; ((p = strtok(NULL, del)) != NULL) && i < nbr; i++) {

    puts(p);

    tab[i] = p;

    }

    }

    }

    int main(){

    char msg[] = "|15236|termtoacq|125,23|123456789123|\n";

    char del[] = "|";

    char * tab[4];
    int i = 0;

    int nbr = sizeof(tab)/sizeof (char *) ; // ou nbr =4 tout simplement

    printf ("tab=%d\n", sizeof(tab));

    msg_intercept(msg, del, &tab[0], nbr);


    for (i =0 ; i<4 && tab[i]!= 0; i++){

    printf ("tab[%d]=\"%s\"\n", i, tab[i]);
    }

    return 0;

    }