Bonjour à tous


Mon code est fonctionnel. Mais je cherche à expliquer son comportement
Voici le code:
-------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char*p="test ok1 ok2";
char*ch1,ch,lex;
char*tab[3];
ch1=malloc((strlen(p)+1)*sizeof(char)));
strcpy(ch1,s);
while (*ch1 && (lex=strpbrk(ch1," "))){
 
         ch=(char*)malloc(((lex-tmp)+1)*sizeof(char));/* mon problème est là*/
        strncpy(ch,ch1,(lex-ch1))[tok-ch1+1]='\0';			
         tab[i++]=ch;        
         ch1=lex+1;
         tab[i]='\0';
 
}
------------------------------
Le but est de découper slon des espaces et pointer tab[i] sur "le token"
Quand j'affiche tab[i] j'ai le résulatat attendu ( tab[0]=test et tab[1]=ok1).
Ma question:
Normalement quand je passe à la deuxième itération , je m'attends à ce que
le contenu de "ch" qui contient déja le token "test" soit écrasé. Donc l'affichage doit être seulement : tab[0]=ok1. Mais l'affichage est:
tab[0]=test
tab[1]=ok1
Ch n'est pas ecrasé? c'est bizarre?

Merci d'avance