Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lire et écrire dans fichier

Alors que tout c'était bien passé jusqu'ici...

    30 octobre 2006 à 11:26:37

    Le tuto est vraiment super, j'ai tout compris, même les pointeurs ! Je voyais arriver petit à petit la troisième partie lorsque badaboum, au chapitre sur les fichiers, impossible de l'ouvrir.

    Je vais vous mettre des saisies d'écran pour vous montrer...

    1) Le dossier de mon programme :
    Image utilisateur

    2) Le code :
    Image utilisateur

    3) La console :
    Image utilisateur

    Le seule différence avec le tuto, c'est dans le dossier, l'îcone de mon main n'est pasle même que le sien et il me manque qqch. Le problème vient-il de là ?

    Demandez-moi si vous désirez plus de précisions.
    Merci de me répondre.
    • Partager sur Facebook
    • Partager sur Twitter
      30 octobre 2006 à 11:44:19

      Le problème vient certainement de Code Block, car le code est coorecte.
      • Partager sur Facebook
      • Partager sur Twitter
        30 octobre 2006 à 12:05:17

        J'utilise Code::Blocks et j'ai copié ton fichier et tout marche à merveille...
        • Partager sur Facebook
        • Partager sur Twitter
          30 octobre 2006 à 12:07:28

          Comme la dit Conficius le code est correcte, essaye peut-ètre de mettre du code dans ton if.
          Avant inscrit quelque chose dans ton fichier et ensuite lit le dans ton if.

          Sa devrai marcher enfin fonctionner
          • Partager sur Facebook
          • Partager sur Twitter
            30 octobre 2006 à 12:27:19

            Dans le if(), ferme le fichier :
            fclose(fichier);
            Et ça devrait marcher (j'ai déjà eu ce genre de problème ;) )

            PS : Tu mets de drôles de noms pour tes projets :p
            • Partager sur Facebook
            • Partager sur Twitter
              30 octobre 2006 à 12:36:35

              Euh :euh: , y date de combien ton codeblocks ???
              • Partager sur Facebook
              • Partager sur Twitter
                30 octobre 2006 à 14:53:59

                Ben je l'ai téléchargé ce matin, c'était la première fois ue je l'utilisais. Mais je l'ai fait parce que j'ai rencontré le même problème sur Dev-C++.

                Ecrire dans le fichier au préalable ? Je l'ai fait. Qu'il y ait qqch d'écrit ou pas ça change rien.
                Je vais esayer de mettre du code dans mon if.

                Citation : Dentuk

                PS : Tu mets de drôles de noms pour tes projets


                Tkt, c'est le plus court nom que j'ai donné. D'habitude je suis dans les 10 mots ^^.


                _______________________________________________________________________________


                Après avoir achevé mon unité centrale à coup d'enceinte... j'ai une bonne nouvelle !

                - J'arrive à écrire qqch dans mon fichier grâce à la méthode "w".
                - J'arrive à lire avec "r".

                Mais hélas, le "r+" marche tjrs pas. Ptet paske je ne fais pas le bon code... Regardez, là le fichier txt est vierge. Je voudrais écrire une phrase, puis la lire (en l'affichant dans ma console). Ya un truc qui cloche ?

                Citation : Jaufré

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

                int main(int argc, char *argv[])
                {
                FILE* fichier = NULL;
                char chaine[1000] = "";
                fichier = fopen("test.txt", "r+");

                if (fichier != NULL)
                {
                fputs("Salut les Zér0s\nComment allez-vous ?", fichier);
                fgets(chaine, 1000, fichier);
                printf("%s", chaine);
                fclose(fichier);
                }
                else
                {
                printf("Impossible d'ouvrir le fichier test.txt\n");
                }

                return 0;
                }



                Note : Comparé à tt à l'heure, ma console n'affiche rien (pas de msg d'erreur), donc elle a réussi à ouvrir le fichier.
                • Partager sur Facebook
                • Partager sur Twitter
                  30 octobre 2006 à 15:23:37

                  Avant de lire, remets le curseur au début :
                  rewind(fichier);
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    30 octobre 2006 à 16:01:50

                    Le mode r+ est a éviter à tout prix...
                    Sous mon système windows (C::B) l'ouverture de fichiers en lecture/écriture ne fonctionne PAS, les diverses fonctions fgetc, fputc, etc... ne renvoient pas de code d'erreur mais échouent (le fichier n'est au final pas modifié).
                    En revanche sous mon sytème linux (debian/gcc) tout fonctionne correctement.
                    De plus le mode r+ est complexe a mettre en place et assez inutile (on peut faire la même chose sans, et beaucoup plus simplement...).
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 octobre 2006 à 16:08:38

                      Oki, merci, ça marche avec le rewind.

                      Bon, ultérieurement, si j'ai des problèmes avec "r+" je ferais qqch de plus long :
                      ouvrir fichier "w"
                      écrire dans fichier
                      fermer fichier
                      ouvrir fichier "r"
                      lire en affichant la chaine
                      fermer fichier

                      Là ça march puisque j'ai utilisé "w" et "r" au lieu de "r+"

                      Petite question : comment que vous faitespour afficher vos codes en couleur sur le fofo lorsque vous faites une citation ???

                      Encore une fois merci à tous, je vais pouvoir passer à l'allocation dynamique et puis... Yipiii la partie III !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 octobre 2006 à 16:13:01

                        Citation : Jaufré

                        ultérieurement

                        Fais confiance à simon.arvaux, il a plus d'expérience que moi ;)

                        Citation : Jaufré

                        ouvrir fichier "w"
                        écrire dans fichier
                        fermer fichier
                        ouvrir fichier "r"
                        lire en affichant la chaine
                        fermer fichier

                        Oui ;)

                        Citation : Jaufré

                        Petite question : comment que vous faitespour afficher vos codes en couleur sur le fofo lorsque vous faites une citation ???

                        Ben, on utilise la balise faite exprès pour ça : <code type="c"></code> (En dessous de gras tu as tous les langages)

                        Citation : Jaufré

                        Encore une fois merci à tous, je vais pouvoir passer à l'allocation dynamique et puis... Yipiii la partie III !

                        Bonne chance :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 octobre 2006 à 16:21:35

                          Cherchez pas midi à 14 heures, le fichier qui se trouve dans le dossier de l'éxécutable s'appelle "Test.txt.txt" :D Si Windows t'affiche "Fichier Texte" en desous de l'icône, c'est que l'extension ".txt" est déjà prise en compte, même s'il ne l'affiche pas. En clair, renomme ton fichier en "test" tout simplement :)
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            30 octobre 2006 à 16:38:53

                            Vous pouvez essayer ce petit exemple pour vous convaincre que r+, c'est le mal :


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

                            int main(void){
                                FILE* file=fopen("test.txt","wt");
                                fprintf(file,"A?C\n");
                                fclose(file);
                                file=fopen("test.txt","rt+");
                                char A=fgetc(file);
                                printf("A = %c\n",A);
                                int errorCode=fputc('B',file);
                                printf("errorCode = %i\n",errorCode);
                                char C=fgetc(file);
                                printf("C = %c\n",C);
                                fclose(file);
                                return EXIT_SUCCESS;
                            }


                            Ce code ne provoque pas le résultat attendu sous mon système windows, en effet on commence par créer un fichier texte avec a l'intérieur simplement la chaine "A?C\n".
                            Ensuite on réouvre ce fichier en mode lecture/écriture, puis on récupère le premier caractère, qui est bien un A, à ce moment notre pointeur de fichier se trouve bien juste avant le ?, que l'on souhaite écraser et remplacer par un B avec fputc, le pointeur de fichier avance donc encore et on lit le C avant de fermer le fichier.
                            Lors de l'éxécution, les caractères A et C sont correctement lus, et la fonction fputc semble ne pas échouer (elle ne renvoie pas EOF en cas d'erreur comme le précise la norme), cependant si j'ouvre le fichier avec le bloc notes je constate que le fichier contient toujours A?C et non pas ABC...
                            Je répète que je n'observe ce comportement que sur mon système windows (a mon grand étonnement... =p) et que sous linux (en utilisant la libC GNU), le code ci dessus provoque le résultat attendu.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              30 octobre 2006 à 16:52:31

                              je voulais juste dire que j'avais pose la meme question tout a l'heure pour le r+ et que j'ai enleve le .test sur le fichier et tout est rentré dans l'ordre comme la expliqué Elrond.
                              Le r+ marche trés bien maintenant.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                30 octobre 2006 à 17:12:15

                                :euh: En fait c'était tout bête !

                                Le "r+" mrche très bien maintenant pour moi. Merci pour tous vos conseils, j'attaque le pendu maintenant !!!
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  30 octobre 2006 à 17:14:17

                                  erreur de frappe je voulais dire j'ai enleve le .txt et non le .test comme la dit Elrod tout a l'heure
                                  et tout marche tres bien maintennant
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    2 novembre 2006 à 22:52:57

                                    Citation : simetoile

                                    erreur de frappe je voulais dire j'ai enleve le .txt et non le .test comme la dit Elrod tout a l'heure
                                    et tout marche tres bien maintennant

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      2 novembre 2006 à 23:05:51

                                      Citation : simon.arvaux

                                      Le mode r+ est a éviter à tout prix...


                                      +1
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Music only !
                                        3 novembre 2006 à 0:22:59

                                        Citation : Elrond

                                        Cherchez pas midi à 14 heures, le fichier qui se trouve dans le dossier de l'éxécutable s'appelle "Test.txt.txt" :D Si Windows t'affiche "Fichier Texte" en desous de l'icône, c'est que l'extension ".txt" est déjà prise en compte, même s'il ne l'affiche pas. En clair, renomme ton fichier en "test" tout simplement :)



                                        Cette erreur m'est arrivé recemment, c'est assez rageant de perdre du temps pour ça. Pour que cela ne se reproduise plus il suffit de suivre la procédure suivante dans l'explorateur windows :
                                        menu "Outils" > "option des dossiers" > onglet "Affichage" > décocher "masquer les extensions des fichiers dont le type est connu"
                                        Ainsi, windows affiche toutes les extensions, il n'y a plus de confusion possible. Si vous vous appercevez que vos fichiers portes tous 2 extensions, vous saurez pourquoi vous n'arriviez pas à les ouvrir en ne mentionnant qu'une seule extension dans le code source du programme.

                                        PS : Pensez à décochez cette foutu case a chaque fois que vous manipulez des fichiers en C sur un nouveau PC, vous verrez vous gagnerez du temps, c'est prouvé. (pour l'anecdote j ai perdu 1h, la dernière fois, ne réalisant pas que je n'étais pas sur mon pc...)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
                                          3 novembre 2006 à 0:40:57

                                          Citation : iNaKoll

                                          Cette erreur m'est arrivé recemment, c'est assez rageant de perdre du temps pour ça. Pour que cela ne se reproduise plus il suffit de suivre la procédure suivante dans l'explorateur windows :
                                          menu "Outils" > "option des dossiers" > onglet "Affichage" > décocher "masquer les extensions des fichiers dont le type est connu"


                                          +1
                                          Pas plus tard que cet après midi...
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Music only !

                                          Lire et écrire dans fichier

                                          × 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