Extraire une chaine en C

Alexandra -  
 Alexandra -
Bonjour,
J'ai un fichier texte de ce type :
R=2506;2506;2506;2506;2506;2506;2506;2523;2523;2506;
J'aimerai savoir comment faire pour extraire ce qu'il y a entre les points virgule.
C'est à dire pouvoir stocker 2506 dans une variable et ainsi de suite.
Merci.

3 réponses

  1. ben
     
    voici un petit exemple trés sympas qui repondra parfaitement à ton problème:

    char *strtok(char *s, const char *delim);
    Cette fonction découpe une chaîne en sous-chaînes en focntion d'un ensemble de délimiteurs. La fonctin est initialiser en passant la chaîne à décomposer en premier paramètre, elle retourne alors le premier champ. Pour récuperer les autres champs il faut appeler strtok() avec NULL comme premier paramètre. Quand il n'y a plus de champs dans la chaîne la fonction retourne NULL.

    Exemple :

    #include

    int main(int argc, char*argv[]){
    char chaine[]="GET http://machine/fichier HTTP/1.0";
    char *champ;

    champ = strtok(chaine, "\t ");
    while(champ!=NULL){
    printf("%s\n",champ);
    champ = strtok(NULL, "\t ");
    }
    }
    5
    1. Alexandra
       
      Merci beaucoup Ben
      Mon boulot a avancé
      0
  2. ben
     
    Il faut tout d'abord que tu lise la ligne dans ton fichier et que tu la stoch dans un tableau, il existe ensuite une fonction a laquelle tu peux préciser le separateur (ici ;) et tu peux ainsi récuperer tes differente valeur. Le probleme c'est que il va te falloir autant de variable que de valeur à moins de faire du dynamique (malloc). Le pb c'est que je me souvien pas exactement du om de cette fonction je crois qu'il y a tok dans le nom du style strtok mais j'en suis pas sur je vais rechercher.

    ben
    1
  3. ben
     
    c'est bon c'est bien sa voila la syntaxe exacte:
    char *strtok(char *s, const char *delim);
    tu mets comme 1er champ ta chaine de caractere puis en deuxieme ton separateur, elle te retourne une chaine allant jusqu'a ton separateur. Il faut mettre cette fonction dans une boucle a fin de récuperer tes elements un par un .

    ben
    0