Partage
  • Partager sur Facebook
  • Partager sur Twitter

pointeur sur file qu'est ce que c'est concrétement

pointeur sur file

    22 mai 2006 à 20:57:15

    salut,
    d'après les cours de m@téo, j'ai bien compris le pointeur :
    pointeur c'est un variable qui a pour valeur l'adresse
    d'une autre variable.ce que j'ai compris le pointeur prend
    l'adresse d'un autre variable et la modifie, ça c'est clair.
    mon problème c'est que je n'arrive pas à compredre bien le
    pointeur sur file,
    code c
    FILE* fopen(const char* nomDuFichier, const char* modeOuverture);

    fopen renvoie un pointeur sur FILE , et pourquoi ce pointeur , on peut pas dire simplement fopen renvoie file?
    merci
    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2006 à 21:02:11

      Eh bien comme tu l'as dit toi meme plus haut, un pointeur prend en valeur une adresse, donc pour les FILE c'est pareil tu crées au depart un FILE *fichier = NULL; qui est un pointure de la structure FILE donc quand tu fais fichier = fopen("fichier.txt", "r"); la fonction va renvoyer au pointeur une adresse
      (d'après ce que j'ai compris^^, dites moi si je me trompe)
      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2006 à 21:17:14

        salut
        si on écrit:
        FILE *fichier = NULL;
        le fichier qui est un pointeur sur file.
        et lorsq'on écrit :
        fichier = fope("fichier.txt", "r");
        le fichier va prendre l'adresse de qui pour la modifier?
        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2006 à 21:22:50

          Tu ne vas jamais modifier des fichiers directement, donc tu le fais par le biais d'autre fonction, qui emploie des pointeurs pour modifie directement :)
          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2006 à 21:26:02

            La fonction renvoie un pointeur sur FILE, ca signifie que la variable à laquelle on assigne la fonction reçoit un pointeur sur FILE.

            Ensuite, ne te demande pas l'adresse de quoi ca prend et comment ca marche dans les détails. :)

            Sur ce. :)
            • Partager sur Facebook
            • Partager sur Twitter
              22 mai 2006 à 22:23:50

              Citation : tamsamani


              mon problème c'est que je n'arrive pas à compredre bien le
              pointeur sur file,
              code c

              FILE* fopen(const char* nomDuFichier, const char* modeOuverture);


              fopen renvoie un pointeur sur FILE , et pourquoi ce pointeur , on peut pas dire simplement fopen renvoie file?


              http://mapage.noos.fr/emdel/tad.htm
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                22 mai 2006 à 22:30:25

                Si ce n'était un pointeur, cela signifierait que le fichier est intégralement enregistré dans la variable de ton programme... Cela reviendrait à faire une copie du fichier dans le programme, ce qui serait absurde : perte de temps et d'espace... On utilise donc un pointeur afin de lire et de manipuler le fichier directement depuis la source, c'est-à-dire à son adresse !
                • Partager sur Facebook
                • Partager sur Twitter
                  22 mai 2006 à 22:37:51

                  Citation : Chahine

                  Si ce n'était un pointeur, cela signifierait que le fichier est intégralement enregistré dans la variable de ton programme... Cela reviendrait à faire une copie du fichier dans le programme, ce qui serait absurde : perte de temps et d'espace... On utilise donc un pointeur afin de lire et de manipuler le fichier directement depuis la source, c'est-à-dire à son adresse !


                  Le pointeur ne pointe pas sur "le fichier" (ça n'a aucun sens, il est sur disque). Il pointe sur une structure de données interne dont le contenu dépend de l'implémentation, et qui sert à gérer le fichier en conservant les élemntes nécessaire son exploitation, comme la lecture séquentielle, par exemple...

                  Tout ce qu'il faut retenir, c'est que l'adresse est en quelque sorte la 'clé unique' qui permet d'identifier un fichier par rapport à un autre, tout en utilisant les mêmes fonctions. (Le code n'est évidemment pas doublé, c'est strictement le même). Ce mécanisme est connu sous le nom de TAD (Type Abstrait de Données) ou ADT (Abstract Data Type)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Music only !
                    22 mai 2006 à 22:38:09

                    salut,
                    fopen renvoie un pointeur sur FILE .
                    veuillez me réctifier mes idées SVP
                    notre pointeur est un fichier sur file sur une structure.
                    dans le code suivant:
                    SDL_Surface *ecran = NULL;
                    peut on dire que écran est un pointeur de type SDL_Surface sur une
                    strucure?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 mai 2006 à 22:46:45

                      Citation : tamsamani

                      fopen renvoie un pointeur sur FILE .


                      Non. fopen() renvoit une adresse de type FILE* (pointeur sur FILE)

                      Citation : tamsamani


                      notre pointeur est un fichier sur file sur une structure.


                      J'ai rien compris. Le pointeur est une variable de type pointeur sur FILE qui contient une adresse. Celle-ci est le début d'un objet de type FILE dont on ne connaoit pas la nature (et ça ne nous intéresse pas. On parle d'objet 'abstrait'. On a pas à en connaitre les détails.)

                      Citation : tamsamani


                      dans le code suivant:
                      SDL_Surface *ecran = NULL;
                      peut on dire que écran est un pointeur de type SDL_Surface sur une
                      strucure?


                      Bien vue l'analogie. Tout ce qu'on peut dire, c'est que ecran pointe vers un objet de type SDL_Surface. Là encore, les détails internes ne nous concernent pas.

                      http://mapage.noos.fr/emdel/tad.htm
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Music only !
                        22 mai 2006 à 22:53:37

                        L'analogie n'est pas super en fait. SDL_Surface est un type complet dont tous les champs sont accessibles.

                        Par contre un GLUquadric (pour ceux qui suivent le tuto d'OpenGL) est un ADT au meme titre que FILE .
                        On ne sait rien dessus et on ne le manipule que par des fonctions. (c'est d'ailleurs assez dommage pour le GLUquadric car on ne peut pas faire nos propres "extentions").
                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 mai 2006 à 22:55:34

                          Citation : Kayl

                          L'analogie n'est pas super en fait. SDL_Surface est un type complet dont tous les champs sont accessibles.


                          Certes, ceux de FILE aussi (en général), mais sont-ils spécifés pour l'utilisateur ?

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            22 mai 2006 à 22:58:34

                            Ah oui tiens je vois que l'utilisateur a accès à quelques infos sur le FILE si on veut.

                            stdio.h
                            typedef struct _iobuf
                            {
                                    char*   _ptr;
                                    int     _cnt;
                                    char*   _base;
                                    int     _flag;
                                    int     _file;
                                    int     _charbuf;
                                    int     _bufsiz;
                                    char*   _tmpfname;
                            } FILE;


                            Alors que le GLUQuadric est opaque à 100% définition :
                            C : struct GLUQuadric;
                            C++ : class GLUQuadric;
                            Point barre, on n'a pas le droit d'en savoir plus coté utilisateur (headers).
                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 mai 2006 à 23:02:02

                              Citation : Kayl

                              Ah oui tiens je vois que l'utilisateur a accès à quelques infos sur le FILE si on veut.

                              stdio.h

                              typedef struct _iobuf
                              {
                                      char*   _ptr;
                                      int     _cnt;
                                      char*   _base;
                                      int     _flag;
                                      int     _file;
                                      int     _charbuf;
                                      int     _bufsiz;
                                      char*   _tmpfname;
                              } FILE;



                              C'est souvent pour pouvoir implémenter les macros getc() et putc(). Mais l'utilisateur n'a pas à y toucher. Jamais. (Ni les champs, ni leur type ni leur noms ne sont définis par le langage C. C'est de la responsabilité de l'implémentation à 100%)


                              • Partager sur Facebook
                              • Partager sur Twitter
                              Music only !

                              pointeur sur file qu'est ce que c'est concrétement

                              × 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