Bonjour à tous, je suis en train de réalisé le TP du cours sur le C concernant l’en-tête <string.h>, et je ne comprends pas une partie du code de la correction pour la fonction strtok(). Voici le code mis dans la correction :
char *xstrtok(char *chaine, char *liste)
{
static char *dernier;
char *base = (chaine != NULL) ? chaine : dernier;
if (base == NULL)
return NULL;
separateur_au_debut:
for (char *sep = liste; *sep != '\0'; ++sep)
if (*base == *sep)
{
++base;
goto separateur_au_debut;
}
if (*base == '\0')
{
dernier = NULL;
return NULL;
}
for (char *s = base; *s != '\0'; ++s)
for (char *sep = liste; *sep != '\0'; ++sep)
if (*s == *sep)
{
*s = '\0';
dernier = s + 1;
return base;
}
dernier = NULL;
return base;
}
C’est la ligne "dernier = s + 1" que je ne comprends pas, car en faisant ça on ne va pas perdre le premier caractère de la chaîne lors de l’appel suivante ? Car ici s pointe sur '\0’, qui était anciennement un séparateur. Donc s + 1 pointe sur le premier caractère suivant le séparateur, non ? Merci d’avance pour vos réponses
+0
-0