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

Comment Diviser Des Chaines Avec Strtok En Programmation C



Séparer des chaînes est important pour diverses raisons telles que le traitement de texte, l'analyse de données ou l'analyse syntaxique, 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 fractionnement en plusieurs jetons par un délimiteur spécifié est strtok() . En tant que fonction de bibliothèque, elle 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 à l'aide de strtok() , vous devez d'abord comprendre comment cela fonctionne. Le strtok() lit la chaîne d'entrée caractère par caractère jusqu'à ce qu'elle rencontre un délimiteur. Une fois qu'un délimiteur est trouvé, strtok() le remplace par un caractère nul '\0', divisant ainsi la chaîne d'origine en deux parties. Un pointeur sur le premier caractère de la chaîne est alors renvoyé par la fonction. Le strtok() la syntaxe de la fonction est :

strtok ( carboniser * chaîne , constante carboniser * je partage ) ;

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







Comment diviser des chaînes avec Strtok() en programmation C ?

Voici un exemple d'utilisation strtok() pour diviser une chaîne :



#include

#include

entier principal ( ) {

carboniser saisir [ ] = 'Linux, indice' ;

carboniser * jeton ;

jeton = strtok ( saisir , ',' ) ;

alors que ( jeton != NUL ) {

printf ( '%s \n ' , jeton ) ;

jeton = strtok ( NUL , ',' ) ;

}

retour 0 ;

}

Dans l'exemple ci-dessus, nous déclarons d'abord un pointeur vers un char. On utilise alors 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élimitation ' ','. Le premier jeton, 'Linux', est celui qui strtok() revient comme un pointeur vers . Nous utilisons ensuite une boucle while pour parcourir la chaîne d'entrée, en utilisant strtok() avec un pointeur NULL pour continuer à diviser les jetons restants. La chaîne de délimitation est à nouveau passée en argument à strtok() pour indiquer les caractères de délimitation.



Sortir





Limitations de la fonction Strtok()

1 : Modifie la chaîne d'origine

Le strtok() la fonction ne renvoie pas de copie de la chaîne ; à la place, il modifie la chaîne d'origine. Par conséquent, si vous avez besoin d'une version non modifiée de la chaîne après l'avoir fractionné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 tokeniser 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 comporte des espaces consécutifs entre les mots, strtok() le traite comme un délimiteur unique. Pour gérer de tels cas, vous devrez utiliser une approche différente.

Conclusion

Le strtok() La fonction est une fonction très utile pour diviser les chaînes en programmation C. Il prend une chaîne d'entrée et une chaîne de délimitation 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 une copie à la place. Maintenant que vous savez comment le faire, vous pouvez couper n'importe quelle ficelle en plus petits morceaux pour la traiter.