Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme avec le fscanf

Sujet résolu
    24 mai 2015 à 16:01:34

    Bonjours à tous je suis sur la leçon "Lire et ecrire dans des fichier" et j'en suis donc arriver à l'exemple des fscanf.

    Voila mon code que j'ai fait en suivant l'exemple de la leçon.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main (int argc, char *argv[])
    {
        FILE* fichier=NULL;
         int score[3]={0};
        fichier=fopen("text.txt","r");
    
    
        if(fichier !=NULL)
        {
            fscanf(fichier,"%d %d %d",&score[0],&score[1],&score[2]);
            printf("Les 3 meilleurs scores sont : %d,%d et %d",score[0],score[1],score[2]);
            fclose(fichier);
        }
        else
        {
            printf("Ouverture du fichier impossible");
        }
    
        return 0;
    }

    Voila et j'ai remarqué aussi que dans mon dossier un deuxieme fichier test.txt a était créé juste à coté de l'initial. Ce deuxieme fichier ne contient rien en mémoire. 

    Bon apres je me suis dit que je devrais peut etre changé de mode d'ouverture et je suis passé en "w+", mais la encore ce n'était pas ça puisque cette fois la lecture ce fait mais je ne parvient pas à inscrire mes valeurs. D'ailleurs peut on m'expliquer svp pour quoi on ouvre le dossier dans l'exemple en mode "r" (lecture seul) et non  en w ou r+ ou meme w+ puisqu'on est censé écrire des valeurs et non simplement lire.

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2015 à 16:42:32

      fscanf c'est pour lire le contenu du fichier de la même facon que scanf lit le contenu de stdin.
      fscanf ne sert pas écrire dans ton fichier.
      Concernant les modes d'ouverture, c'est assez bien expliqué a mon avis.
      Un 2è fichier avec le même nom dans ton répertoire. o_O Change de lunettes stp.
      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2015 à 16:52:24

        Non mais c'est vrai, en ouvrant en mode w+ ça me créer un deuxieme fichier vierge mais avec le meme nom :(

        http://image.noelshack.com/fichiers/2015/21/1432479070-sans-titre.jpg

        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2015 à 17:06:59

          http://www.cplusplus.com/reference/cstdio/fopen/

          write/update: Create an empty file and open it for update (both for input and output). If a file with the same name already exists its contents are discarded and the file is treated as a new empty file. 

          Bizarre ton truc. essaie de supprimer les 2 et relance.
          Est-ce que ça le fait pendant l'exécution du programme puis le fichier disparait ou bien le fichier persiste après que le programme se soit fermé.

          • Partager sur Facebook
          • Partager sur Twitter
            24 mai 2015 à 17:25:24

            le deuxieme fichier reste, je peux meme l'ouvrir mais il est vierge.

            Et etrangement quand je relance le programme en mode"r"  alors qu'il y a le deuxieme fichier test.txt, cette foisun des 2 fichier s'ouvre, mais je ne peux pas inscrir mes valeurs avec fscanf.

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2015 à 17:32:46

              Zerg57 a écrit:

              Voila et j'ai remarqué aussi que dans mon dossier un deuxieme fichier test.txt a était créé juste à coté de l'initial.

              Tu veux dire que tu as 2 fichiers nommés test.txt dans le même dossier ?

              • Partager sur Facebook
              • Partager sur Twitter
                24 mai 2015 à 17:52:05

                Lucien63 a écrit:

                Zerg57 a écrit:

                Voila et j'ai remarqué aussi que dans mon dossier un deuxieme fichier test.txt a était créé juste à coté de l'initial.

                Tu veux dire que tu as 2 fichiers nommés test.txt dans le même dossier ?

                C'est ça je l'ai montré dans ce lien :

                http://image.noelshack.com/fichiers/2015/21/1432479070-sans-titre.jpg

                Bien que ça ait pourtant marché avec les fonction fgets et fgetc, j'ai cru que c'était parce que l'executable n'était pas avec le fichier test.exe (il était dans le dossier bin) , alors je l'ai mis avec les autres et j'ai fait le chemin absolue mais ça ne veut toujouts pas s'ouvrir :(

                içi je met le fichier .exe avec les autres 

                http://www.noelshack.com/2015-21-1432482144-sans-titre.jpg

                et le resultat est toujours pareil meme avec le chemin absolue.

                http://www.noelshack.com/2015-21-1432482405-sans-titre.jpg



                -
                Edité par Zerg57 24 mai 2015 à 17:56:34

                • Partager sur Facebook
                • Partager sur Twitter
                  24 mai 2015 à 18:00:35

                  NOn mais je suis bete !!! désolé j'ai écrit text.txt au lieu de test.txt, c'est pour ça que ça ne marché pas :lol:

                  Bon cette fois ci ça s'ouvre mais je ne parviens toujours pas à changé mais 3 valeurs :(

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 mai 2015 à 18:04:17

                    Zerg57 a écrit:

                    Lucien63 a écrit:

                    Zerg57 a écrit:

                    Voila et j'ai remarqué aussi que dans mon dossier un deuxieme fichier test.txt a était créé juste à coté de l'initial.

                    Tu veux dire que tu as 2 fichiers nommés test.txt dans le même dossier ?

                    C'est ça je l'ai montré dans ce lien ...

                    Il faut prendre tes lunettes ? Déjà ce n'est pas possible d'avoir 2 fichiers avec le même nom dans un dossier.

                    Et en fait tu en a un qui ce nomme test.txt et l'autre text.txt



                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 mai 2015 à 10:10:35

                      Oui je vais changé mes lunettes :)

                      mais bon le probleme original est toujours la, je n'arrive pas à changer mes valeurs avec 

                       fscanf(fichier,"%d %d %d",&score[0],&score[1],&score[2]);

                      j'ai lu qu'il fallait mettre des virgule entre les %d mais ça ne marche pas chez moi. Le chemin absolue ne marche pas non plus, je suis désemparé :(

                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 mai 2015 à 11:44:12

                        Il contient quoi le fichier que tu essais de lire ?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 mai 2015 à 11:57:22

                          Il ne contient rien il est vierge.

                          http://image.noelshack.com/fichiers/2015/22/1432547744-sans-titre.jpg

                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 mai 2015 à 12:27:46

                            Ton code sert à lire un fichier.

                            alors, lire un fichier qui ne contient rien, ça va donner grand chose !

                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 mai 2015 à 14:17:48

                              d'accord il fallait marquer les scores dans le fichier :lol:

                              Merci pour le coup de main et la patience !

                              -
                              Edité par Zerg57 26 mai 2015 à 14:18:39

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Probleme avec le fscanf

                              × 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