Comment diviser les chaînes avec Strtok en programmation C?

Comment diviser les chaînes avec Strtok en programmation C?
Clissage des chaînes est important pour diverses raisons telles que le traitement de texte, l'analyse des données ou l'analyse, et le langage de programmation C offre de nombreuses façons de gérer cette tâche. Cependant, la fonction C la plus populaire qui permet chaîne de division en jetons multiples par un délimiteur spécifié est strtok (). Étant une fonction de bibliothèque, il est disponible dans la bibliothèque C standard qui prend en charge les opérations de chaîne.

Comment fonctionne la fonction strtok ()?

Pour diviser une chaîne en utilisant strtok (), Vous devez d'abord comprendre comment cela fonctionne. Le strtok () lit le caractère de chaîne d'entrée par caractère jusqu'à ce qu'il rencontre un délimiteur. Une fois qu'un délimiteur est trouvé, strtok () le remplace par un caractère nul «\ 0», divisant efficacement la chaîne d'origine en deux parties. Un pointeur vers le premier caractère de la chaîne est ensuite renvoyé par la fonction. Le strtok () La syntaxe de la fonction est:

strtok (char * str, const char * Delim);

Le strtok () La fonction prend deux arguments - un pointeur vers le premier jeton dans l'ensemble des jetons et une chaîne qui contient les caractères de délimiteur. Il renvoie un pointeur vers le jeton suivant, qui commence immédiatement après le délimiteur qui a divisé le dernier jeton. Il retourne null s'il n'y a plus de jetons.

Comment diviser les chaînes avec strtok () en programmation C?

Voici un exemple de comment utiliser strtok () Pour diviser une chaîne:

#inclure
#inclure
int main()
CHAR INPUT [] = "Linux, indice";
token char *;
token = strtok (entrée, ",");
Pendant (jeton != Null)
printf ("% s \ n", jeton);
token = strtok (null, ",");

retour 0;

Dans l'exemple ci-dessus, nous déclarons d'abord un pointeur vers un char. Nous utilisons ensuite strtok () Pour diviser la chaîne d'entrée en jetons. Le premier appel de strtok () Prend deux arguments: la chaîne d'entrée et la chaîne de délimiteur ",". Le premier jeton, «Linux», est celui qui strtok () revient en tant que pointeur vers. Nous utilisons ensuite une boucle de temps pour itérer dans la chaîne d'entrée, en utilisant strtok () avec un pointeur nul pour continuer à diviser les jetons restants. La chaîne de délimiteur est à nouveau transmise comme argument à strtok () Pour indiquer les caractères de délimiteur.

Sortir

Limites de la fonction strtok ()

1: modifie la chaîne d'origine

Le strtok () La fonction ne renvoie pas de copie de la chaîne; Au lieu de cela, il modifie la chaîne d'origine. Par conséquent, si vous avez besoin d'avoir une version non modifiée de la chaîne après l'avoir divisée, vous devez faire une copie de la chaîne d'origine avant d'invoquer strtok ().

2: asynchrone

Une limitation importante de strtok () est qu'il ne peut être utilisé que sur une seule chaîne à la fois. En d'autres termes, vous ne pouvez pas l'utiliser pour tokensize plusieurs chaînes simultanément.

3: capacité limitée

Une autre limitation potentielle est que strtok () a une capacité limitée à gérer les délimiteurs répétés. Par exemple, si votre chaîne a des espaces consécutifs entre les mots, strtok () Le traite comme un seul délimiteur. Pour gérer ces cas, vous devrez utiliser une approche différente.

Conclusion

Le strtok () La fonction est une fonction très utile pour diviser les chaînes dans la programmation C. Il prend une chaîne d'entrée et une chaîne de délimiteur et renvoie un pointeur vers le premier jeton trouvé dans la chaîne d'entrée. Strtok () est destructeur, donc si vous avez besoin de préserver l'intégrité de la chaîne d'origine, il est conseillé d'en créer un double. Maintenant que vous savez comment le faire, vous pouvez couper n'importe quelle chaîne en pièces plus petites pour le traitement.