Partage
  • Partager sur Facebook
  • Partager sur Twitter

fgets dans un tableau

Sujet résolu
    15 mai 2006 à 16:10:48

    Bonjour :)

    J'aimerais récupérer les lignes d'un fichier pour les mettre dans un tableau. Je souhaite utiliser fgets pour récupérer les lignes.

    Mais ce code ne fonctionne pas :


    // Ouverture du fichier...

    char tableau[10][100] = {0};
    int i;

    for(i = 0; i < 10, i++)
    {
      fgets(tableau[i], 100, fichier);
    }


    Savez-vous d'où peut provenir le problème ? Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      15 mai 2006 à 16:24:11

      char tableau[10][100] = {0};

      C'est là que ça met une erreur? Parce qu'un tableau, ça s'initialise comme ça: T tab[X][Y] = {{0}};
      Sinon si c'est pas là, je vois pas où c'est
      Et puis ne fonctionne pas c'est ps précis. ça compile pas (errors), ça fait des warnings, ou ça a un effet inattendu?
      Sinon si -ed- passe par là il va te montrer cette fonction (hyper pratique, merci -ed- !)
      void clean (char *s, FILE *fp)
      {
         /* search ... */
         char *p = strchr (s, '\n'); /* <string.h> */
         if (p != NULL)
         {
            /* ... and kill */
            *p = 0;
         }
         else
         {
            /* purge */
            int c;
            while ((c = fgetc(fp)) != '\n' && c != EOF)
            {
            }
         }
      }

      Le premier argument la chaine, le second le fichier. ça supprime l' '\n' ou "vide" le flux
      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2006 à 16:34:06

        Si il y a plusieurs lignes dans ton fichier, je crois qu'il faut faire un truc dans ce genre:
        while (fgets(tableau[i],100, fichier) != NULL) {
          i++
        }
        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2006 à 16:37:30

          Non, c'est au niveau du fgets, ca compile dans le programme plante.

          L'erreur est : [Warning] passing arg 1 of `fgets' from incompatible pointer type

          Tu as une idée ?

          Edit : pour seb13, je ne pense pas que le souci vienne de là, vu que c'est un problème de pointeur ;)

          Sinon, je viens de voir que j'ai le même problème avec fputs :(
          • Partager sur Facebook
          • Partager sur Twitter
            15 mai 2006 à 16:38:55

            Citation : Zulon

            char tableau[10][100] = {0};


            C'est là que ça met une erreur? Parce qu'un tableau, ça s'initialise comme ça: T tab[X][Y] = {{0}};



            Plutôt :
            char tableau[10][100] = {{0},{0}};


            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              15 mai 2006 à 16:41:02

              Ca change quoi ?!
              • Partager sur Facebook
              • Partager sur Twitter
                15 mai 2006 à 16:42:06

                Pour initialiser un tableau la méthtode de Zulon est valable aussi, on peut faire les deux.

                EDIT: 1 mn de retard
                • Partager sur Facebook
                • Partager sur Twitter
                  15 mai 2006 à 17:12:34

                  Tiens, je viens de réessayer, et je n'ai plus de problème, j'avais sûrement dû faire une erreur/faute de frappe dans le code ;)

                  Merci à tous
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 mai 2006 à 17:20:35

                    Citation : Zulon

                    Ca change quoi ?!



                    Je suis de loin pas un expert mais je crois que c'est la façon la plus exacte d'initialiser un tableau multi-dimensionnelle. Après tout dépend de la sensibilité de ton compilateur !
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      15 mai 2006 à 17:22:04

                      Tu as essayé ma méthode avec -Wall -Wextra -ansi -pedantic ? ça marche.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 mai 2006 à 17:43:51

                        Je vais essayer mais si tu le dis je te fais confiance. Personellement, je compile sans pedantic (dailleurs, si tu pouvais m'éclairer sur son utilisation :D) mais avec -O2 en plus.(le reste tout pareil).

                        Il y a quelques temps j'avais justement posé cette question et on m'avait signalé la méthode que j'ai cité plus haut, comme quoi tout les chemins menent à Rome :)

                        [edit] ca passe egalement chez moi de ta facon !
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          15 mai 2006 à 17:45:14

                          -pedantic, c'est pour avoir du code standard. -O2, c'est pour la vitesse/taille, rien à voir avec la sensibilité
                          • Partager sur Facebook
                          • Partager sur Twitter

                          fgets dans un tableau

                          × 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