Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ecriture de fichier et lecture

petit problème bizarre...

Anonyme
    25 février 2006 à 10:38:55

    Bonjour tous le monde :)

    Voilà j'ai un problème bizarre, voici le code en question:


    if (fichier != NULL)
                       {
                             while (!feof(fichier))
                             {
                                 fgets(chaine, 1000, fichier);
                                 printf("%s", chaine);
                                 }

                            fclose(fichier);
                            printf("Voulez vous retourner au menu principale ou visualier un autre fichier (0 pour retourner au menu et 2 pour rster)? ");
                            scanf("%ld", &menu);
                            }             


    Donc dans se fichier il y a une ligne censé ressemblait à sa: ("Niveau : X"), mais bizarrement, cette ligne est répété deux fois dans la console lors de l'éxécution du programme.
    • Partager sur Facebook
    • Partager sur Twitter
      25 février 2006 à 10:55:37

      Et si tu fais 10 dans fgets ??

      Mais c'est vrai que c'est bizzare...
      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2006 à 10:56:17

        C'est parce que eof n'est indiqué qu'une fois qu'une fonction de lecture a effectivement échoué dans sa lecture en rencontrant la fin du fichier, pas quand la position est à la fin du fichier.
        http://c-faq.com/stdio/feof.html
        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2006 à 10:57:07

          Citation : rz0

          C'est parce que eof n'est indiqué qu'une fois qu'une fonction de lecture a effectivement échoué dans sa lecture en rencontrant la fin du fichier, pas quand la position est à la fin du fichier.
          http://c-faq.com/stdio/feof.html



          Bon à savoir ça...
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            25 février 2006 à 11:00:10

            Euh j'ai pas comprit le truc la lol
            • Partager sur Facebook
            • Partager sur Twitter
              25 février 2006 à 11:06:33

              En gros, t'a boucle s'éxecute une fois de trop.

              Puisqu'elle ne s'arrête pas la :

              FICHIER<-fin du fichier

              Mais une fois qu'elle ne peut plus lire, donc après la fin du fichier.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                25 février 2006 à 11:09:53

                Euh et donc faut rajouter quoi pour que sa marche (je suis pas doué en anglais j'ai comprit que le problème lol ^^).
                • Partager sur Facebook
                • Partager sur Twitter
                  25 février 2006 à 11:14:22

                  Logiquement, tu ne dois meme pas avoir besoin de while... puique fgets te prendra tout le fichier...
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    25 février 2006 à 11:16:19

                    Bah sa ne lit qu'une ligne fgets, donc faut bien une boucle pour lire toutes les lignes (enfin du moins dans le cours c'est marqué que sa ne lit qu'une ligne).
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 février 2006 à 11:22:13

                      A oui, c'est vrai... ba je vois pas, désolé.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        25 février 2006 à 11:31:05

                        Tous le code? Euh bon bah j'édite ce message dans quelques minutes (mon pc refuse d'envoyer des messages trop grand donc je vais sur un autre pc ^^).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 février 2006 à 11:34:44

                          A l'heure actuel je pense qu'il faudrai enlever le dernier printf et scanf de la boucle. Attendons ton code...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            25 février 2006 à 11:44:34

                            Bon bah je fait un nouveau post du coup pour le code lol ^^


                            #include <stdio.h>
                            #include <stdlib.h>

                            int main(int argc, char *argv[])
                            {
                              short int rester = 1, carac = 0, menu = 0
                              char pseudo[100], titre[100], metier[100], ville[100], chaine[1000];
                              long force = 0, intelligence = 0, charisme = 0, reputation = 0, niveau = 0;   
                              FILE* fichier = NULL;
                             
                              while(rester)
                              {
                                   fichier = fopen("caracteristique.txt", "w");       
                                   if(fichier != NULL)
                                   {     
                                         
                                          if(menu == 0)
                                          {   
                                               system("CLS");
                                               printf("Bienvenue dans le programme de Caracteristique\n\n");
                                               printf("1-Ecrire un nouveau profile\n");
                                               printf("2-Charger un profile\n");
                                               printf("3-Quitter le programme\n");
                                               scanf("%ld", &menu);
                                               }
                                          else if(menu == 1)
                                          {   
                                               system("CLS");
                                               printf("Bienvenue dans la partie ecriture de profile du programme\n\n");         
                                               printf("Comment vous nommez vous ? ");
                                               scanf("%s", &pseudo);
                                               printf("Ou habitez vous ? ");
                                               scanf("%s", &ville);
                                               printf("Possedez vous un titre (0 si non) ? ");
                                               scanf("%s", &titre);
                                               printf("Quel metier exercez vous ? ");
                                               scanf("%s", &metier);
                                               printf("\nCombien de force avez vous ? ");
                                               scanf("%ld", &force);
                                               printf("Combien d'intelligence avez vous ? ");
                                               scanf("%ld", &intelligence);
                                               printf("Combien de charisme avez vous ? ");
                                               scanf("%ld", &charisme);
                                               printf("Combien de point de reputation possedez vous ? ");
                                               scanf("%ld", &reputation);
                                               printf("A quel niveau etes vous ? ");
                                               scanf("%ld", &niveau);             
                                                             
                                               fprintf(fichier, "Nom: %s\nVille: %s\nTitre: %s\nMetier: %s\n\nForce: %ld\nIntelligence: %ld\nCharisme: %ld\nReputation: %ld\nNiveau: %ld\n", pseudo, ville, titre, metier, force, intelligence, charisme, reputation, niveau);               
                                               fclose(fichier)
                                               strcat(pseudo,".carac" );
                                               rename("caracteristique.txt", pseudo);   
                                               }                               
                                   
                                          else if(menu == 2)
                                          {   
                                               system("CLS");
                                               printf("Bienvenue dans la partie chargement de profile du programme\n\n");
                                               printf("Veuillez entrer le nom du fichier : ");
                                               scanf("%s", &pseudo);
                                               
                                               strcat(pseudo,".carac" );                   
                                               system("CLS");                   
                                               fichier = fopen(pseudo, "r");

                                               if (fichier != NULL)
                                               {
                                                     while (!feof(fichier))
                                                     {
                                                         fgets(chaine, 1000, fichier);
                                                         printf("%s", chaine);
                                                         }

                                                    fclose(fichier);
                                                    printf("Voulez vous retourner au menu principale ou visualier un autre fichier (0 pour retourner au menu et 2 pour rster)? ");
                                                    scanf("%ld", &menu);
                                                    }             
                                                }
                                               
                                          else
                                          {
                                              rester == 0;
                                              }             
                                   } 
                            }
                                   
                              system("PAUSE");     
                              return 0;
                            }
                            • Partager sur Facebook
                            • Partager sur Twitter
                              25 février 2006 à 11:48:07

                              Je comprends pas pourquoi tu as organiser ton fichier comme ca !
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                25 février 2006 à 11:53:07

                                Euh le fichier que l'utilisateur crée? Si c'est sa bah c'est simple, c'est bien mieux présenté lorsqu'on l'affiche après (certe sa pause un problème pour le modifier mais sa j'y suis pas encore donc bon ^^).
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  25 février 2006 à 19:47:51

                                  Non non, je parle de ton code source, je le trouve très mal organisé ! Un bon morceau de ton code ne sert à rien, revois ca, car là je peux pas t'aider :/
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Ecriture de fichier et lecture

                                  × 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