Code:
1 2 3 4 5 6 7 8
| char *p = strtok(line, " ");
if (p != NULL)
{
tmp = p + 1;
p = strtok(NULL, " ");
if (p != NULL)
{
*p = '\0'; |
Le premier
strtok va mettre
p sur le premier '1' de "1 192.168.0.1 ....." et met un '\0' dans
line derriere ce '1'.
line devient 1'\0'192.168.0.1 .....
tmp pointe ensuite sur ce '\0' !
Le deuxième
strtok va mettre
p sur le (premier)1 de 192.168.0.1 et met un '\0' dans
line derriere le dernier '1' . Aussi sec ce premier '1' est remplacé par '\0' !
Dans
line, à partir de
p, on a maintenant '\0'92.168.0.1'\0'.
temp ne pointe pas sur le début du 192....qui est d'ailleurs détruit
Pourquoi pas tout simplement :
Code:
1 2 3 4 5 6 7 8 9 10
|
char *p = strtok(line," ");
if (p != NULL)
{
p = strtok(NULL, " ");
if (p != NULL)
{
........
tab[nb-1] = malloc((strlen(p)+1) * sizeof * tab[nb-1]);
........ |
----------------------------
Code:
1 2 3
|
while(*p == " ")
p++; |
strtok sautera tout seul tous les blancs