begin process at 2008 07 06 01:51:53
1 205 433 membres
14 nouveaux aujourd'hui
14 119 membres club

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 : 15 083

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
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  
  • 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

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS