Erreur c

maha1987 Messages postés 101 Date d'inscription samedi 4 juin 2011 Statut Membre Dernière intervention 29 avril 2013 - 18 févr. 2012 à 10:32
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023 - 18 févr. 2012 à 16:39
Bonjour tout le monde,
j'ai ce programme C qui prend des caractères et doit afficher si la chaîne constituée par ces caractères est valide(constituée seulement par des chiffres), mais le résultat est inattendu
aidez moi svp


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


int chiffre(char c)
        {
                 if(c>='0' && c<='9')
                 return(1);
                 return(0);
        }
int verif(char *c,char * s,int *i)
{
    int etat=0;
    *i=0;
    while(etat!=5 && etat !=4)
       {
            switch(etat) 
              {
                 case0:if (chiffre(*c)) etat=1;
                       else if(*c!=' ') etat=5;
                       break ;
                 case1:if (*c=='.') etat=2;
                       else if(*c=='\0') etat=4;
                       else if(!chiffre(*c)) etat=5;
                       break ;
                 case2:if (chiffre(*c)) etat=3;
                       else  etat=5;
                       break ;
                 case3: if (*c=='\0') etat=4;
                       else if(!chiffre(*c)) etat=5;
                       break ;                 
              } 
           *i++;
            s[*i]=*c;       
       }
       if (etat==5)return(0);
       else if (etat==4) return(1);
}        
int main ()
{
    int p=2,i,rep;
    char c;
    char s [100];
      do
        {
          printf("donnez un caractere: ");
         scanf("%c",&c);
         }
      while(p==2);
     p=verif(&c,s,&i);
     if(p==1) 
         printf("la chaine %s est valide",s);
     if(p==0)
       {
         printf("la chaine %s est non valide",s);
         printf("tapez 1 pour reproduire");
         scanf("%d",&rep);
         while(rep ==1)
             {
                   s[i]=s[i+1];
                   p=2;
             }
       } 
       getch();
    }

1 réponse

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
18 févr. 2012 à 16:39
Bonjour

je n'ai pas tout regardé
mais dans un 1er temps :
- tes 2 boucles while dans le main sont des boucles infinies
0
Rejoignez-nous