Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur en C

Sujet résolu
    13 juillet 2018 à 17:04:31

    Bonjour,

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void Connection();
    
    int main (){
    
        Connection();
    
        //parti clean, aucun erreur
    
        int nombreMystere = 0, nombreEntre = 0;
        const int MAX = 100, MIN = 1;
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        do
        {
            printf("Quel est le nombre ? ");
            scanf("%d", &nombreEntre);
    
    
            if (nombreMystere > nombreEntre)
                printf("C'est plus !\n\n");
            else if (nombreMystere < nombreEntre)
                printf("C'est moins !\n\n");
            else
                printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
        } while (nombreEntre != nombreMystere);
    
        return 0;
    }
    //fin de la parti clean
    
    
    
    void Connection(){
        char iden[100];
        char motdp[100];
        char isIns;
        int verified = 0;
    
    
            printf("Etes-vous deja inscrit ?(o/n)");
            scanf("%d", &isIns);
            if(isIns == o){
    
    
            printf("Entrez votre identifiant");
            scanf("%d", &iden);
    
            printf("Entrez votre mot de passe");
            scanf("%d", &motdp);
    
            verified = MdpVerif(char motdp[],char iden[]);
    
            if(verified == 0){
            printf("Connecté avec succès");
            }else{
    
            printf("Identifiant ou mot de passe incorrect\n");
            printf("Merci de réessyer");
            Connection();
    
    
            }
    
            }
    
            else{
                printf("Alors enregistrez vous ici:");
                printf("Identifiant:");
    
                printf("Mot de passe:");
    
    
            }
    
    
    
    }
    
    int MdpVerif(char MdpEntre[], char Identifiant[]){
    
    
    }
    

    Et il me sort l'erreur:

    Line: 55 ; Message: expected expression before 'char'

    Alors que toute mes variables de type 'char' sont clean, d'ou vient le problème ?

    Merci.

    Walox

    -
    Edité par LorisWalox 13 juillet 2018 à 17:05:35

    • Partager sur Facebook
    • Partager sur Twitter
      13 juillet 2018 à 17:31:22

      Hello,

      Ligne 45: tu donnes un format %d, alors que ta variable est du type char

      Lignes 50 et 53: pas besoin de donner l'adresse de la variable, le nom de la variable est déjà une adresse (char [ ] ou char *)

      Ligne 55: on ne donne pas le type de la variable lors de l'appel à une fonction (voir cette discussion)

      Ligne 63: tu appelles Connection() à partir de Connection() ? Ce n'est pas une erreur en soi, mais sais-tu ce que tu fais ? Une boucle do....while serait plus logique.

      Ton indentation est très sérieusement à revoir !!!

      -
      Edité par edgarjacobs 13 juillet 2018 à 17:33:35

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        13 juillet 2018 à 19:44:19

        En tout cas, merci beaucoup. Mais pourquoi on a pas besoin de donner l'adresse de la variable, alors que pour tout les autre type si ? Et concernant le fait que j'appelle Connection() dans Connection(), je préfere utiliser la récursivité que un boucle.

        -
        Edité par LorisWalox 13 juillet 2018 à 20:00:12

        • Partager sur Facebook
        • Partager sur Twitter
          13 juillet 2018 à 23:20:20

          En c, lorsqu'un tableau est déclaré, il s'agit simplement d'un suite d'éléments qui se suivent en mémoire, le nom du tableau contenant l'adresse du premier élément. Ainsi, int array[....] fait que array contient l'adresse de array[0], et char name[....] fait que name contient l'adresse de name[0]. Donc, les syntaxes suivantes sont parfaitement équivalentes (par paire)

          int array[....];
          char name[....];
          	
          scanf("%d",array);
          scanf("%d",&array[0]);
          
          scanf("%s",name);
          scanf("%s",&name[0]);
          
          scanf("%d",array+1);
          scanf("%d",&array[1]);
          
          scanf("%s",name+1);
          scanf("%s",&name[1]);
          


          Attention: array et name ne sont en aucun cas des pointeurs ! array est du type tableau de x entiers, et name est un du type tableau de x caractères.

          En ce qui concerne la récursion, c'est idiot d'aller encombrer la pile, qui a une taille limitée, alors qu'un do...while est nettement plus naturel et moins consommateur de ressources. Ici, ça a peu d'importance, mais on a déjà vu des programmes se planter à cause d'une récursion mal gérée. Donc, imo, si on peut éviter la récursion, autant le faire.

          -
          Edité par edgarjacobs 14 juillet 2018 à 0:15:18

          • Partager sur Facebook
          • Partager sur Twitter

          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          Erreur en C

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown