Probleme sscanf

maha1987 Messages postés 101 Date d'inscription samedi 4 juin 2011 Statut Membre Dernière intervention 29 avril 2013 - 25 févr. 2012 à 13:06
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012 - 28 févr. 2012 à 11:09
bjr tt le monde jai un prob dans ce prog (dans la fct verif si letat =4 le prog doit sticker la valeur de la partie entiere et decimale de la chaine dans les 2variables v1 et v2 mais je sais pas pk le sscanf na pas marche)

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

int chiffre(char ch) 
  {
     return(ch>='0' && ch<='9');
  } 
int verif_version2( char *s,long *v1,long  *v2)
  {
            char c;
            int etat=0;
     while(etat!=4 && etat!=5)
        {
          switch(etat)
             {
                  case 0 :if(*s==' ') etat=0;
                          else if(chiffre(*s)) etat=1;
                          else etat=5;
                          break ;
                  case 1:if(chiffre(*s)) etat=1;
                         else if ( *s==' ') etat=6;
                         else if(*s=='.') etat=2;
                         else if(*s=='\0') etat=4;
                         else etat=5;
                         break ;
                  case 2:if(chiffre(*s)) etat=3;
                         else etat=5;
                         break ;
                  case 3 :if(chiffre(*s)) etat=3 ;
                          else if(*s=='\0') etat=4;
                          else if (*s==' ') etat=6;
                          else etat=5;
                          break ;
                  case 6 :if(*s==' ') etat=6;
                          else if(*s=='\0') etat=4;
                          else etat=5;
                          break ; 
             } 
         *s++ ;
        } 
        if (etat==4)
              {
                    sscanf(s,"%ld %c %ld",v1,&c,v2);
                    return(1); 
              }
        return(0);
         
              
  }
int main()
{ 
    char m[100];long  v1=0,v2=0;
    printf(" svp donnez une chaine de caracteres:  ");
    gets(m);
    if( verif_version2(m,&v1,&v2))
        printf ("la chaine %s est valide:la partie entiere est %ld et la partie decimale est %ld .",m,v1,v2) ;
    else 
        printf ("la chaine %s est non valide.",m) ;
    getch();
    return(0);
}
 

2 réponses

BunoCS Messages postés 15476 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 3 mai 2024 103
25 févr. 2012 à 21:39
Hello,
Je ne comprends pas ton code. Mais si tu cherches à découper une chiane, tu peux regarder strtok().


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
28 févr. 2012 à 11:09
D'aileurs après avoir essayé de découper ta chaîne avec ',' tu voudras sûrement utiliser atoi...

=> Je crois que tu veux faire un genre de atof!

http://www.cplusplus.com/reference/clibrary/cstdlib/atof/
0
Rejoignez-nous