Je travaille sur un projet qui implique l'utilisation de strtok
et, pour une raison quelconque, j'obtiens des valeurs NULL au lieu des valeurs réelles (qui devraient être "Deux" et "Trois"). Voici mon code:Obtention de valeurs NULL lors de l'utilisation de strtok [C]
int main(){
int h,z;
char text[100] = "One Two Three";
for(h = 0; h < 4; h ++){
char *first = strtok(text, " ");
printf("%s\n",first);
for(z = 0; z < 3; z++){
char *second = strtok(NULL, " ");
printf("%s\n",second);
}
}
return 0;
}
La sortie Je reçois est:
One
Two
Three
One
(null)
(null)
One
(null)
(null)
One
(null)
(null)
Que puis-je faire pour obtenir la bonne valeur Two
et Three
au lieu de null?
'z < 3' ->' z <2' ? –
@StephanLechner Je l'ai fait mais j'ai toujours la même sortie - null – Lucas
'strtok()' * modifie la chaîne * en y insérant des terminaisons de chaîne à la place des délimiteurs qu'il découvre. Ainsi, si vous voulez vraiment marquer la même entrée plusieurs fois, comme vous essayez de le faire en exécutant la boucle entière dans votre boucle sur 'h', vous devez éviter de mettre la chaîne originale en jeu. Faites des copies et marquez-les. –