Comment extraire des mots d’une phrase efficacement en C?

J’ai besoin d’une fonction efficace qui extrait la première seconde et le rest de la phrase en trois variables.

Méthode simple: utilisez strtok () ou strtok_r pour obtenir les deux premiers jetons, qui les supprimeront de la chaîne. Ainsi, la chaîne elle-même sera votre troisième jeton recherché.

Manière difficile: parsingr soi-même 🙁

Strtok est dans la bibliothèque de chaînes C et va muter votre chaîne d’origine. Soyez donc prudent, copiez d’abord la chaîne si elle doit restr intacte.

Exemple possible:

//#include  char input[] ="first second third forth"; char delimiter[] = " "; char *firstWord, *secondWord, *remainder, *context; int inputLength = strlen(input); char *inputCopy = (char*) calloc(inputLength + 1, sizeof(char)); strncpy(inputCopy, input, inputLength); firstWord = strtok_r (inputCopy, delimiter, &context); secondWord = strtok_r (NULL, delimiter, &context); remainder = context; printf("%s\n", firstWord); printf("%s\n", secondWord); printf("%s\n", remainder); getchar(); free(inputCopy); 

Cela devrait fonctionner correctement et être threadsafe avec la chaîne originale non mutée.

strtok ()

Vous devez d’abord définir les délimiteurs. Il y a quelques problèmes avec strtok (cela modifie son argument, par exemple, ce qui peut vous causer des ennuis). Je préfère lire dans la chaîne et exécuter un parsingur personnalisé pouvant aller de sscanf à un parsingur complet. S’il vous plaît poster un peu plus de détails.