Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Erreur mega chiante

Sujet résolu
    28 février 2006 à 15:42:48

    Bonjour,
    J'ai voulu refaire un + ou moins, mais avec d'autres techniques, et j'ai foiré. Du moins y a un erreur qui me prends VACHEMENT la tête...

    CODE:
    .c
    #include <stdio.h>
    #include <stdlib.h>
    #include "Prototypes.h"
    #define TAILLE_MAX 100

    int main(int argc, char *argv[])
    {
      int ChoixMenu, ChoixNombre, compteur = 0, ChoixEnr;
      long longueur, nombreMystere;
      const long MAX = 100, MIN = 1;
      FILE *mPointeur = NULL;
      infos user;
     
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
       
      printf("Bienvenu dans le + ou -\n");
      printf("Selectionnez le mode de jeu\n");
      printf("Menu:\n1.Mode Solo\n2.Mode Multi\n");
      do
      {
                            printf("Votre Choix: ");
                            scanf("%d", &ChoixMenu);
                            } while (ChoixMenu < 1 || ChoixMenu > 2);
     
      switch (ChoixMenu)
      {
             case 1:
                  do
                  {
                  printf("Quel est ton nom?\n");
                  fgets(user.pseudo, TAILLE_MAX, stdin);
                  longueur = strlen(user.pseudo);
                     } while (longueur > TAILLE_MAX);
                     
                     printf("\nQuel est ton age?");
                     scanf("%d", &user.age);
                        // fin demande infos
                 
                  printf("L'ordi a calcule un nombre mystere, trouve le\n");
                  do {
                       printf("\nChoix: ");
                       scanf("%d", &ChoixNombre);
                       
                       if (ChoixNombre < nombreMystere)
                       { printf("\nC'est plus grand!\n");
                         Compteur++; }
                       
                       else if (ChoixNombre > nombreMystere)
                       { printf("\nC'est plus petit!\n");
                         Compteur++; }
                       
                       else
                       { printf("Bravo tu as trouve en %d tentatives!", Compteur); }
                       } while (ChoixNombre != nombreMystere);
                       
                       printf("Veux-tu enregistrer ce score?\n");
                       
                       do {
                           printf("1.Oui\n2.Non\nChoix: ");
                           scanf("%d", &ChoixEnr);
                           } while (ChoixEnr < 1 || ChoixEnr > 2);
                           
                           switch (ChoixEnr)
                           {
                                  case 1:
                                       if (mPointeur != NULL)
                                         {
                                       mPointeur = fopen ("Score+ou-.txt","a");
                                       fprintf(mPointeur, "Le meilleur score que tu peux avoir est : 0\n\n");
                                       fprintf(mPointeur, "[%s]: Score de %dpts",user.pseudo,compteur);
                                       fclose(mPointeur);
                                              }
                                             
                                              else
                                              { printf("Erreur Fermeture");
                                                getchar();
                                                return 0; }
                                                break;
                                               
                                                case 2:
                                                     getchar();
                                                     return 0;
                                                     break;
                                                     }
                  break;
                 
                  case 2:
                       printf("en construction");
                       break;
                       
                       default :
                               printf("Mauvaise saisie\n");
                       }
      getchar();   
      return 0;
    }


    .h
    typedef struct
    {
            char pseudo[];
            int age;
            } infos;



    Dans le *.h j'avais mis #ifndef, #define et #endif mais sa ne marché pas, et les enlevant, sa marche pas non plus.

    PROBLEME???
    #include "Prototypes.h"

    In file included from from main.c

    Merci de m'apporter de l'aide...
    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2006 à 15:48:56

      Je crois que c'est dûe à ici:
      typedef struct
      {
              char pseudo[];
              int age;
              } infos;

      Il faudrait peut-être inserer une valeur entre les "[]" non ?
      EDIT: Err je regarde décidement trop vite.
      • Partager sur Facebook
      • Partager sur Twitter
        28 février 2006 à 15:49:36

        Salut :)

        1. Indente mieux car c'est difficile de lire ton programme.

        2. Pourquoi après l'accolade de ta structure, tu mets :
        typedef struct
        {
                char pseudo[];
                int age;
                } infos;


        Je pense que ça serait plutôt ça :

        typedef struct infos infos;
        struct infos
        {
             char pseudo[100];
             int age;
        };
        • Partager sur Facebook
        • Partager sur Twitter
          28 février 2006 à 15:55:04


          typedef struct infos
          {
               char pseudo[100];
               int age;
          }infos;

          fonctionne aussi.
          • Partager sur Facebook
          • Partager sur Twitter
            28 février 2006 à 15:59:21

            Citation : pepe


            typedef struct infos
            {
                 char pseudo[100];
                 int age;
            }infos;


            fonctionne aussi.



            Je savais pas, merci :p .
            • Partager sur Facebook
            • Partager sur Twitter
              28 février 2006 à 18:11:18

              EDIT: Après avoir mit une valeur sa marche impec :)

              le problème venait de là:
              typedef struct
              {
                      char pseudo[100];
                      int age;
                      } infos;


              Oubli de mettre une valeur au char.
              Merci tous!++
              • Partager sur Facebook
              • Partager sur Twitter
                28 février 2006 à 18:14:04

                Tu n'as que ça comme message d'erreur ??? Vraiment bizzare...
                • Partager sur Facebook
                • Partager sur Twitter
                  28 février 2006 à 18:14:43

                  T'as mis "Compteur++;" au lieu de "compteur++;". Donne nous toutes les erreurs de compilation, on trouvera plus facilement.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 février 2006 à 18:16:12

                    _Azerty: je l'ai vu avant ton post et l'ai corrigé ;)
                    TOPIC CLOS! ++ :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 février 2006 à 18:18:26

                      main.c
                      #include <stdio.h>
                      #include <stdlib.h>
                      #include "Prototypes.h"
                      #define TAILLE_MAX 100

                      int main(int argc, char *argv[])
                      {
                        int ChoixMenu, ChoixNombre, Compteur = 0, ChoixEnr;//faute de frappe a compteur
                        long longueur, nombreMystere;
                        const long MAX = 100, MIN = 1;
                        FILE *mPointeur = NULL;
                        infos user;
                       
                          srand(time(NULL));
                          nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                         
                        printf("Bienvenu dans le + ou -\n");
                        printf("Selectionnez le mode de jeu\n");
                        printf("Menu:\n1.Mode Solo\n2.Mode Multi\n");
                        do
                        {
                                              printf("Votre Choix: ");
                                              scanf("%d", &ChoixMenu);
                                              } while (ChoixMenu < 1 || ChoixMenu > 2);
                       
                        switch (ChoixMenu)
                        {
                               case 1:
                                    do
                                    {
                                    printf("Quel est ton nom?\n");
                                    fgets(user.pseudo, TAILLE_MAX, stdin);
                                    longueur = strlen(user.pseudo);
                                       } while (longueur > TAILLE_MAX);
                                       
                                       printf("\nQuel est ton age?");
                                       scanf("%d", &user.age);
                                          // fin demande infos
                                   
                                    printf("L'ordi a calcule un nombre mystere, trouve le\n");
                                    do {
                                         printf("\nChoix: ");
                                         scanf("%d", &ChoixNombre);
                                         
                                         if (ChoixNombre < nombreMystere)
                                         { printf("\nC'est plus grand!\n");
                                           Compteur++; }
                                         
                                         else if (ChoixNombre > nombreMystere)
                                         { printf("\nC'est plus petit!\n");
                                           Compteur++; }
                                         
                                         else
                                         { printf("Bravo tu as trouve en %d tentatives!", Compteur); }
                                         } while (ChoixNombre != nombreMystere);
                                         
                                         printf("Veux-tu enregistrer ce score?\n");
                                         
                                         do {
                                             printf("1.Oui\n2.Non\nChoix: ");
                                             scanf("%d", &ChoixEnr);
                                             } while (ChoixEnr < 1 || ChoixEnr > 2);
                                             
                                             switch (ChoixEnr)
                                             {
                                                    case 1:
                                                         if (mPointeur != NULL)
                                                           {
                                                         mPointeur = fopen ("Score+ou-.txt","a");
                                                         fprintf(mPointeur, "Le meilleur score que tu peux avoir est : 0\n\n");
                                                         fprintf(mPointeur, "[%s]: Score de %dpts",user.pseudo,Compteur);//encore une faute de frappe dans compteur
                                                         fclose(mPointeur);
                                                                }
                                                               
                                                                else
                                                                { printf("Erreur Fermeture");
                                                                  getchar();
                                                                  return 0; }
                                                                  break;
                                                                 
                                                                  case 2:
                                                                       getchar();
                                                                       return 0;
                                                                       break;
                                                                       }
                                    break;
                                   
                                    case 2:
                                         printf("en construction");
                                         break;
                                         
                                         default :
                                                 printf("Mauvaise saisie\n");
                                         }
                        getchar();   
                        return 0;
                      }

                      Prototypes.h
                      typedef struct
                      {
                              char pseudo[100];
                              int age;
                              } infos;
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [C] Erreur mega chiante

                      × 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