je l'extrait de code suivant:strtok ne retourne pas tous les jetons
char *buffer2 = malloc(1024*sizeof(char));
scanf("%s",buffer2);
char *command = strtok(buffer2," ");
if (strcmp(command,"INFO") == 0)
{
char *file_path = strtok(NULL," ");
if (file_path != NULL)
{
info(file_path);
}
}
Mon but est: d'une chaîne comme « nom_cmd PARAM1 PARAM2 » ... à la chaîne tokenize selon ce format. Jusqu'ici tout va bien, j'ai écrit le code ci-dessus, il compile, le programme ne plante pas, mais le résultat est, cependant, faux dans le sens où si je saisis la chaîne "INFO work/file1.sf" la commande est analysée correctement mais pour le file_path la fonction strtok retourne un pointeur NULL. J'ai lutté avec cela pendant des heures, j'ai lu la documentation pour cette fonction, j'ai cherché d'autres réponses sur ce sujet, mais aucun d'eux n'était satisfaisant. Si vous avez une idée de ce que je fais mal, aidez-moi s'il vous plaît.
@ user3121023 Je pense que cela vaut une réponse –
@ user3121023 Oh mon Dieu, tu as raison ... Je ne comptabilité un fait trivial. Merci beaucoup – Dragos2795
Utilisez 'fgets' et ajoutez' \ n' aux séparateurs 'strtok'. –