Partage
  • Partager sur Facebook
  • Partager sur Twitter

Expliquations buffer....

Sujet résolu
    24 juillet 2006 à 11:22:44

    Bonjour a tous,

    voila j'ai un problème, je ne comprend pas comment marche le buffer, enfin a quoi cela sert exactement de le vider (avant fgets, après fgets...) et je ne comprends pas non plus ces formules:

    int c;
          while ((c = fgetc(fp)) != '\n' && c != EOF)



      int c;
       
        while((c = getchar()) != EOF && c != '\n')


    Est-ce que quelqu'un pourrait me detailler ce que font ces formules et en quoi elle sont différentes?

    Merci d'avance.(J'ai deja parcourus des topics mais je n'est pas trouvé les explications de ces formules).
    • Partager sur Facebook
    • Partager sur Twitter
      24 juillet 2006 à 11:41:52

      Citation : GFOX

      voila j'ai un problème, je ne comprend pas comment marche le buffer, enfin a quoi cela sert exactement de le vider (avant fgets, après fgets...) et je ne comprends pas non plus ces formules:


      http://mapage.noos.fr/emdel/notes.htm#fgetc
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        24 juillet 2006 à 12:27:25

        Merci pour le lien mais c'est pour fgetC et pas pour fgetS, et pour l'explications de fgets ils parlent pas de


          int c;
            while((c = getchar()) != EOF && c != '\n')

        int c;
              while ((c = fgetc(fp)) != '\n' && c != EOF)


        Merci....


        • Partager sur Facebook
        • Partager sur Twitter
          24 juillet 2006 à 12:47:54

          Alors en fait c'est super simple,
          dans l'include stdio.h
          il y a un lot de fonction destinés a la lecture ecriture dans un fichier, toutes ces fontions ont le préfixe f exemple :

          fgetchar(FILE* fichier);

          bon alors que fait fgetchar :
          en fait il lit un caractère dans le fichier ciblé par le pointeur File* fichier
          et cela fait avancé le curseur du fichier.
          puis il renvoi le caractère lut.

          qu'est-ce que le curseur de fichier?
          en fait c'est comme ton curseur de souris dans un fichier texte, avec fopen lorsque tu vient d'ouvrir le fichier. Le curseur est tout au début, avant le premier caractère.

          lorsque tu fait un fgetchar ca lit le caractère suivant le curseur et ensuite ca avance le curseur de 1 caractère.
          donc par exemple pour lire tout le fichier complet tu fait.

           
          FILE* fichier = fopen("nomfichier.txt","r"); //ouvre le fichier nomfichier.txt en lecture texte.

          char buffer; //destiné a contenir le caractère lu.

           while((buffer=fgetchar(fichier))!=EOF) //tant que il y a des caractères à lire derriere le curseur de fichier on fait un tour de boucle.
           {
           printf("%c",buffer);//On affiche le caractère qui a été lu dans fichier et enregistré dans buffer.
           }




          Mais getchar(void) lui ca a rien a voir avec les fichier.
          Ca consiste juste à lire le caractère entrée avant la pression de la touche enter.

          exemple :


          char touche;

          puts("pressez une touche et faites enter.");

          touche = getchar();

          printf("La touche qui a été préssée est %c",touche);



          voila.



          A oui, la constante EOF signifie tout simplement End Of File.
          donc voila espérant que c'est ça que tu voulais savoir :euh:
          • Partager sur Facebook
          • Partager sur Twitter
            24 juillet 2006 à 15:12:53

            Merci castorus, ça m'aide un peu mais je ne comprends pas très bien.

            Est-ce que quelq'un pourrais poster un code qui permet d'entrer une chaine
            avec fgets(on m'a conseillé ça plutot que scanf("%[^\n]s" ...)
            et qui ne comporterait pas de problème, ni au moment de la saisie
            ni avant, ni après...
            et me l'expliquer quelque peu... :-°

            Ce serait simpa parsque la j'ai du mal a comprendre... merci.
            • Partager sur Facebook
            • Partager sur Twitter
              24 juillet 2006 à 17:46:27

              Citation : GFOX


              Est-ce que quelq'un pourrais poster un code qui permet d'entrer une chaine
              avec fgets



              #include <stdio.h>
              {
                 char line[32];

                 fgets (line, sizeof line, stdin);
                 clean (line, stdin);
              }

              avec :

              static void purge (FILE * fp)
              {
                 int c;
                 while ((c = fgetc (fp)) != '\n' && c != EOF)
                 {
                 }
              }

              static void clean (char *s, FILE * fp)
              {
                 /* search ... */
                 char *p = strchr (s, '\n')/* <string.h> */
                 if (p != NULL)
                 {
                    /* ... and kill */
                    *p = 0;
                 }
                 else
                 {
                    purge (fp);
                 }
              }

              Voilà. Toutes les explications on déjà été données dans les liens. Si tu ne comprends pas quelquechose soit plus précis que "j'ai du mal a comprendre"...
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                24 juillet 2006 à 18:41:02

                Ok merci,

                je vais essayer de comprendre tout ça, je vais faire quelques recherches et je vais m'entrainer un peu.
                Je reposterai si besoin est...

                Merci a tous.
                • Partager sur Facebook
                • Partager sur Twitter

                Expliquations buffer....

                × 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