Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

STRTOK : EXEMPLE D'UTILISATION


Information sur la source

Catégorie :Chaîne de caractères Niveau : Débutant Date de création : 04/06/2003 Date de mise à jour : 05/06/2003 17:40:28 Vu : 21 920

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

Bein c'est juste un petit exemple d'utilisation de la commande strtok. Suite à une demande du forum

Compilateur Dev C++  
 

Source

  • /********************************************************/
  • /* */
  • /* Utilisation de STRTOK */
  • /* Permet de compter le nombre de mot de la phrase */
  • /* Permet d'extraire les différents mots */
  • /* selon le caractere "space" */
  • /* NOTA : Aucun controle dans le prog ! */
  • /* */
  • /* Créateur : Trinta */
  • /* Date de création : 04/06/2003 */
  • /* */
  • /* Version : 1.0.0 */
  • /* Date de modification : 04/06/2003 */
  • /* FREEWARE */
  • /* */
  • /********************************************************/
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  • main ( )
  • {
  • char *pointeur;
  • char *separateur = { " " }; // Le séparateur
  • char *buffer;
  • char *Chaine_Entrante="bonjour je m'appelle Trinita";
  • int nb_mot=1;
  • buffer = strdup ( Chaine_Entrante );
  • // premier appel,
  • pointeur = strtok( buffer, separateur );
  • printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
  • while( pointeur != NULL )
  • {
  • // Cherche les autres separateur
  • pointeur = strtok( NULL, separateur );
  • if ( pointeur != NULL )
  • {
  • nb_mot++; // increment du nombre de mot
  • printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
  • }
  • }
  • getchar (); // pause en mode console
  • return 0 ;
  • }
/********************************************************/
/*							*/
/* 		Utilisation de STRTOK	                */
/* Permet de compter le nombre de mot de la phrase      */
/* Permet d'extraire les différents mots                */
/* selon le caractere "space"                           */
/* NOTA : Aucun controle dans le prog !                 */
/*							*/
/*  Créateur : Trinta                                   */
/*  Date de création : 04/06/2003                       */
/*                                                      */
/*  Version : 1.0.0                                     */
/*  Date de modification : 04/06/2003                   */
/*  FREEWARE                                            */
/*                                                      */
/********************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


main ( )
{
char	*pointeur;
char	*separateur = { " " };     // Le séparateur
char 	*buffer;
char    *Chaine_Entrante="bonjour je m'appelle Trinita";
int     nb_mot=1;
	
buffer = strdup ( Chaine_Entrante );

// premier appel,
pointeur = strtok( buffer, separateur  );
printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
	    
while( pointeur != NULL ) 
{
// Cherche les autres separateur
pointeur = strtok( NULL, separateur  );
if ( pointeur != NULL )
{
nb_mot++; // increment du nombre de mot	
printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
}
}
    
getchar (); // pause en mode console
    
return 0 ;
}  

Conclusion

RESULTAT DU PROGRAMME :
Mot de la phrase numero : 1 bonjour
Mot de la phrase numero : 2 je
Mot de la phrase numero : 3 m'appelle
Mot de la phrase numero : 4 Trinita

Nota : Aucun controle n'est effectue c 'est tout simple...

Bon Dev  
 

Commentaires et avis

signaler à un administrateur
Commentaire de AmK le 04/06/2003 19:08:59

tiens je connaissais pas ça :)
maitenant je la connais grace a toi ;)

signaler à un administrateur
Commentaire de MoDDiB le 04/06/2003 21:24:35

merci ca me parait sympa ^^

signaler à un administrateur
Commentaire de Nebula le 05/06/2003 08:36:46

tite note sur laquelle je me suis deja fait avoir : faut pas l'utiliser avec plusieurs threads, sinon strtok s'emmele les pédales (ce qui est logique vu son fonctionnement, mais je l'ai vu qu'après coup...)

===&gt; parse manuel obligatoire, à moins qu'il existe une autre solution ?

signaler à un administrateur
Commentaire de Trinita16 le 05/06/2003 17:38:42

Merci Nebula, je vais regarder ça.
Mais pour le moment je n'ai pas eu de problème avec la fonction!

Trinita

signaler à un administrateur
Commentaire de gogo.prog le 19/06/2003 10:25:25

chez moi cela decoupe bien la chaine, mais apres avoir tout incrit, mon prog plante. jai devc++ beta 5

signaler à un administrateur
Commentaire de gogo.prog le 19/06/2003 10:29:08

oops jai rien dit, le bug venait d'autre part :)
ton code marche parfaitement :)

signaler à un administrateur
Commentaire de BlackGoddess le 13/06/2005 00:06:20

pour le multithreading, apparement ca deprendrait de l'implémentation de la lib c ... le crt de vs7 crée un ptr pour strtok par thread (qd on compile en mt bien sur) donc pas de soucis :p

signaler à un administrateur
Commentaire de Nebula le 13/06/2005 00:14:05

En effet. Et sous linux et autres *nix, il faut utiliser strtok_r (les fonctions *_r sont compatibles avec le multithreading).

signaler à un administrateur
Commentaire de BruNews le 13/06/2005 00:48:27 administrateur CS

jamais vu l'intérêt de ce strtok, on ballade 2 pointeurs et on a la même chose sans se poser de questions et surtout sans variable implicite qu'on ne controle pas. C'est vraiment le genre de fonction inutile et limite nuisible, tout juste bon pour celui qui arrive de VB, c'est mon avis et je le partage, pas vous ?

signaler à un administrateur
Commentaire de Nebula le 13/06/2005 04:14:01

Perso je préfère le while aussi, au moins on sait où on va. Après chacun est libre de coder comme il le veut, m'enfin.

signaler à un administrateur
Commentaire de jerome86600 le 18/06/2005 18:13:04

comment on fait si on veut mettre le mot dans une variable au lieu de l imprimer?

signaler à un administrateur
Commentaire de bzrd le 13/11/2006 15:56:17

Avantages du strtok :
- on peut mettre une liste de séparateurs, donc c'est plus facile à gérer qu'un while.
- on peut changer la liste de séparateurs entre deux appels.

Gros inconvénients :
- ça utilise une globale pour conserver le pointeur entre 2 appels, donc si une fonction fait une boucle sur un strtok et qu'elle en appelle une autre qui utilise aussi strtok, au retour on a perdu la première boucle (pas réentrant du tout !)
- la chaîne en entrée est modifiée (d'où le strdup de l'exemple fourni je suppose -- il manque d'ailleurs le free correspondant).

Globalement :
 connaître, mais à utiliser avec parcimonie !

signaler à un administrateur
Commentaire de yanlou le 04/07/2008 10:57:08

merçi pour cette exemple ça ma bien aidée

signaler à un administrateur
Commentaire de Topnotch le 14/07/2008 15:22:08

Simple et bien expliqué

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.