IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

parse d'une chaine de caractère


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut parse d'une chaine de caractère
    Salut!

    Je souhaite pouvoir entrer au clavier une chaine de caractere au format suivant:
    ch1 ch2:ch3
    ou
    ch1 ch2-ch3
    j'arrive a récupérer ch1, sauter l'espace, récupérer ch2, récupérer la ponctuation entre ch2 et ch1, mais je ne récuère que le premier caractère de ch3...

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    int reco_com(char s[],char s2[],char temp[],char punct[], char fin[])
    {
      int i,k,j,l;
      char s1[256];
      for(i=0;i<32;i++)
        {
          if(isspace(s[i])!=8192)
    	s1[i]=s[i];
          else
    	{  for(k=i+1;k<32;k++)
    	    {
    	      if(ispunct(s[k])!=4)
    		temp[k-i-1]=s[k];
    	      else
    		{
    		  punct[0]=s[k];
    		  for(l=k+1;k<32;k++)
    		    fin[l-k-1]=s[l];
    		  goto suite;
    		}
    	    }
    	  goto suite;
    	}
        }
     suite:
      j=strcmp(s1,s2);
      return j;
     
    }
    ou s est la chaine entrée lu au clavier, s2 cette meme chaine a laquelle on a enlevé tt ce qui suit l'espace (juste ch1 dans l'exemple), temp <=> ch2, punct<=> : ou - et fin <=> ch3.

  2. #2
    Membre très actif Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Par défaut
    ton code donne pas trop envie de le lire, en plus y'a un goto...
    A ta place j'aurais utilisé pointeurs + sscanf.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    int x;
     
    x = sscanf (ChaineLueAuClavier, "%s", ch1);
    if (x == 1){
      pointeur = ChaineLueAuClavier;
      pointeur = strchr (ChaineLueAuClavier, ' ');
      if (pointeur != NULL){
        pointeur++;
        x = sscanf (pointeur, "%[^:]s", ch2);
          if (x == 1){
             pointeur = strchr (pointeur, ':');
              if (pointeur != NULL){
                 pointeur++;
                 x = sscanf (pointeur, "%s", ch3);
                    if (x == 1)
                          printf ("parse réussis\n");
              }
          }
      }
    }
    Bon c'un peu relou mais ca devrait fonctionner ^^
    Compil your life guy!
    The Aures Project

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut
    que de fonctions inconnues...

    je vais devoir d'abord chercher comment marchent sscanf et strchr pour comprendre ton code, est-ce que c'est normal que quand je tape "man sscanf" dans mon terminal ca trouve rien ?

    merci en tout cas

  4. #4
    Membre très actif Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Par défaut
    t'as peut être pas les manpages ... fais un man scanf voir? (normalement elles sont groupées ensembles) sinon check tes depots.
    Au pire google > man <fonction>
    http://www.linux-kheops.com/doc/man/.../strchr.3.html
    http://www.linux-france.org/article/...3/scanf-3.html
    Compil your life guy!
    The Aures Project

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut
    pas de reponse pour scanf avec man dans mon terminal...

    merci pour les liens, je vais lire tout ca et je te dirai si ca marche ou pas!

  6. #6
    Membre très actif Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Par défaut
    Oups je retire les & dans les sscanf ... erreur de ma part désolé
    Compil your life guy!
    The Aures Project

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Réponses: 1
    Dernier message: 04/06/2012, 12h20
  3. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo