IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Ouverture de fichiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Par défaut Ouverture de fichiers
    Bonjour tous

    Pouvez vous me commenter ce code car sur un site il y avait ce commentaire et c'est pas bien expliqué (c'est plutôt embrouillant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    FILE* fopen(const char* nomDuFichier, const char* modeOuverture);
    /*Cette fonction renvoie un pointeur sur une structure de type FILE. Cette structure est définie dans stdio.h.
    */
     
     
    int main(void)
    {
        FILE* fichier = NULL;
     
        fichier = fopen("test.txt", "r+"); /*Le pointeur "fichier" devient alors un pointeur sur "test.txt".*/
     
    /*Le pointeur "fichier" devrait contenir l'adresse de la structure de type FILE qui sert de descripteur de fichier*/
     
     
     return 0;
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut
    Citation Envoyé par lassault1 Voir le message
    Bonjour tous

    Pouvez vous me commenter ce code car sur un site il y avait ce commentaire et c'est pas bien expliqué (c'est plutôt embrouillant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    FILE* fopen(const char* nomDuFichier, const char* modeOuverture);
    /*Cette fonction renvoie un pointeur sur une structure de type FILE. Cette structure est définie dans stdio.h.
    */
     
     
    int main(void)
    {
        FILE* fichier = NULL;
     
        fichier = fopen("test.txt", "r+"); /*Le pointeur "fichier" devient alors un pointeur sur "test.txt".*/
     
    /*Le pointeur "fichier" devrait contenir l'adresse de la structure de type FILE qui sert de descripteur de fichier*/
     
     
     return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    FILE* fopen(const char* nomDuFichier, const char* modeOuverture);
    /*Cette fonction renvoie un pointeur sur une structure de type FILE. Cette structure est définie dans stdio.h.
    */
     
     
    int main(void)
    {
        FILE* fichier = NULL; // tu déclare un pointeur sur un type FILE
     
    // FILE est un type de donnée (comme un int ou un char)
     
        fichier = fopen("test.txt", "r+"); /*Le pointeur "fichier" devient alors un pointeur sur "test.txt".*/
     
    // fichier est affecté de la valeur que renvoie fopen. Si le fichier s'est bien ouvert cette valeur est le pointeur vers le fichier. Sinon cette valeur est nulle. Donc avant de commencer à lire ton fichier il faut faire un test:
     
    If (fichier == NULL)
           return -1;
     
     
    /*Le pointeur "fichier" devrait contenir l'adresse de la structure de type FILE qui sert de descripteur de fichier*/
     
     
     return 0;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Par défaut
    Merci..

    Ce que je comprend pas c'est qu'ils disent Le pointeur "fichier" devient alors un pointeur sur "test.txt et Le pointeur "fichier" devrait contenir l'adresse de la structure de type FILE.. c'est contradictoire non?

    1/ Pourquoi il est dit que le pointeur "fichier" devient alors un pointeur sur "test.txt" ?

    2/ Est ce que la structure FILE a une variable nommé "fichier" de type FILE ? ( je me pose la question car le pointeur sur FILE se nomme "fichier" )


    3/ Est ce que "test.txt" et "w" sont des chaines de caractère? si oui, pourquoi "w" est une chaine alors qu'il contient qu'un caractère "w" ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut

    Ce que je comprend pas c'est qu'ils disent Le pointeur "fichier" devient alors un pointeur sur "test.txt et Le pointeur "fichier" devrait contenir l'adresse de la structure de type FILE.. c'est contradictoire non?

    1/ Pourquoi il est dit que le pointeur "fichier" devient alors un pointeur sur "test.txt" ?
    Le pointeur fichier est affecté de la valeur que renvoie fopen. Si tous ce passe bien fopen renvoie l'adresse de test.txt qui est mis dans fichier, c'est tout.

    2/ Est ce que la structure FILE a une variable nommé "fichier" de type FILE ? ( je me pose la question car le pointeur sur FILE se nomme "fichier" )
    Ohla! Je ne suis pas sur de piger la question. Je ne suis pas le mieux placer pour te répondre mais FILE n'a pas de type fichier!
    On aurait très bien pus écrire:

    FILE* chmilblic= NULL;

    chmilblic = fopen("test.txt", "r+");


    3/ Est ce que "test.txt" et "w" sont des chaines de caractère? si oui, pourquoi "w" est une chaine alors qu'il contient qu'un caractère "w" ?
    fopen est une fonction qui prend 2 chaines de car pour travailler avec.
    lorsque tu utilise "r+" tu envoie bien une chaine de car a ta fonction
    quand tu écrit: "w" la fonction recoie ceci: w\0 ( \0 est le car de fin de chaine) ce qui est aussi une chaine de car

    Si tu envoie 'w' (comme étant un seul car) ca va planter.
    Je te conseille de lire des tutos de C pour l'ouverture des fichiers il te répondrons bien mieux que moi.

    De plus tu devrais faire des test pour répondre à tes questions. Je n'ai pas un très bon niveau de C mais il n'y à pas besoin de tout comprendre pour faire du C correctement.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Par défaut
    Merci a vous..

    Il y a un truc que je comprends pas aussi c'est qu'on envoie "test.txt" a la fonction et cette fonction envoie "test.txt" a la structure FILE... d'abord c'est c'est ça? si oui comme la fonction fait elle?

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Par défaut
    Suffit juste de lire ca et tu comprend tous d'un coup:

    http://www.linux-kheops.com/doc/man/...3/fopen.3.html


  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par lassault1 Voir le message
    Il y a un truc que je comprends pas aussi c'est qu'on envoie "test.txt" a la fonction et cette fonction envoie "test.txt" a la structure FILE... d'abord c'est c'est ça? si oui comme la fonction fait elle?
    Non ce n'est pas ça.

    Tu passes à fopen() le nom du fichier à ouvrir (ici "test.txt") et le mode d'ouverture (ici w).
    Et fopen() retourne l'adresse d'une structure qui te permet de manipuler le contenu du fichier lorsque tu fournie cette adresse aux fonctions concerné (fread, fgets, fwrite, fseek, etc.).

    Tu n'as pas à connaitre le contenu exact de la structure FILE qui de toute manière dépends de l'implémentation.

  8. #8
    Invité de passage
    Inscrit en
    Avril 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1
    Par défaut
    Complement de reponse...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    FILE *fopen(const char *nomDufichier, const char *modeOuverture); // Format de la fonction fopen.
     
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(){
     
        FILE *f=NULL; // Declaration et initialisation d'une variable f pointant vers une Structure de type FILE.
     
        f=fopen("test.txt","r+"); // Ouverture du fichier existant nommé test.txt en mode lecture et écriture.
     
        if (f != NULL)
            {printf("Fichier ouvert avec succes";}
        else
            {printf("Error a l'ouverture du Fichier");}
     
        return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ouverture de fichier txt
    Par juguul dans le forum MFC
    Réponses: 11
    Dernier message: 18/12/2003, 09h44
  2. Ouverture de fichier en api
    Par Michaël dans le forum Windows
    Réponses: 9
    Dernier message: 10/12/2003, 16h47
  3. Ouverture de fichier
    Par Ricou.13 dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/10/2003, 08h59
  4. Réponses: 2
    Dernier message: 26/02/2003, 15h18
  5. [VBA-E] Evenement ouverture de fichier
    Par gjeff dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/12/2002, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo