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 :

[Débutant] Pointeur FILE dans une fonction


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 40
    Points : 23
    Points
    23
    Par défaut [Débutant] Pointeur FILE dans une fonction
    Salut, je voulais créer une fonction personnalié qui ouvre un fichier. (J'utilise Dev C++)

    J'ai donc créé un pointeur FILE dans cette fonction: FILE* fichier;
    Mais quand je compile, le compilateur me dis que FILE n'a pas été déclarée.

    Alors je crée le pointeur dans main(), et je crée une fonction: void ouverture(FILE* fichier);

    Et là aussi, le compilateur me sort des erreurs: erreur de syntax avant le '*'.

    Je voudrais savoir comment créer une fonction qui se charge d'ouvrire des fichiers et de les gérer.

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    ajoute #include <stdio.h>
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par hiko-seijuro
    ajoute #include <stdio.h>
    Je l'ai déja inclus, j'ai essayé de déclarer le pointeur dans la fonction main() et ça a marché...

    Le probleme c'est que j'arrive pas à le faire dans ma fonction.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Poste ton code.
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Aufait, le probleme ne surgit que quand je met ma fonction dans un autre fichier que celui de la fonction main(), devrais-je ajouter dans ce second fichier #include ?

    Voici le code de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void ouverture(){
    FILE* fichier = NULL;
    ...
    }

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Dexter00
    Aufait, le probleme ne surgit que quand je met ma fonction dans un autre fichier que celui de la fonction main(), devrais-je ajouter dans ce second fichier #include ?

    Voici le code de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void ouverture(){
    FILE* fichier = NULL;
    ...
    }
    Partout où il y a FILE, il doit y avoir un <stdio.h> visible. Il peut être dans un .h.
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Ouais c'était bien ça le probleme...

    Mais je comprends pas, quand j'utilise des fonctions d'autres libs dans mes fonctions se trouvant dans différents fichier que celui de main(), le compilateur ne m'avertis pas lol...

    C'est une éxception ? c'est parce que le type FILE n'est pas défini ? parce que normalement, même sans inclure stdo.h dans la page des fonctions, le code devra s'éxécuter normalement puisqu'il est inclu dans le fichier principal.

    En tout cas, mon prob s'est résolu, j'ai just besoin de comprendre quand est ce qu'il faut inclure les libs dans les autres fichiers...

    Merci

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Dexter00
    Mais je comprends pas, quand j'utilise des fonctions d'autres libs dans mes
    Comme beaucoup, tu confonds 'lib' (en fait, bibliothèque) et fichier d'en-tête.

    http://emmanuel-delahaye.developpez....ganiser_source
    http://emmanuel-delahaye.developpez.....htm#organiser
    http://emmanuel-delahaye.developpez....htm#production
    http://emmanuel-delahaye.developpez....m#bibliotheque
    fonctions se trouvant dans différents fichier que celui de main(), le compilateur ne m'avertis pas lol...
    Si tu utilises gcc, je te conseille le reglage suivant :
    ça fera apparaitre clairement le manque de prototype et donc de fichier d'en-tête.
    C'est une éxception ? c'est parce que le type FILE n'est pas défini ? parce que normalement, même sans inclure <stdio.h< dans la page des fonctions, le code devra s'éxécuter normalement puisqu'il est inclu dans le fichier principal.
    FILE est un type standard mais non natif (contrairement à char, int etc.). Il est défini dans <stdio.h>

    Une unité de compilation ne sait pas ce qu'une autre unité de compilation a inclus ou non. Ca ne la regarde absolument pas.

    Chaque unité de compilation doit inclure les entêtes qui lui sont nécessaires.
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Merci pour ta réponse

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

Discussions similaires

  1. Passage de paramètre "File" dans une fonction
    Par saket2114 dans le forum Général Java
    Réponses: 10
    Dernier message: 28/10/2009, 16h40
  2. [Pointeurs] Instanciation dans une fonction
    Par Arnaud F. dans le forum C++
    Réponses: 7
    Dernier message: 17/12/2007, 16h05
  3. passage pointeur NULL dans une fonction
    Par reptils dans le forum C
    Réponses: 4
    Dernier message: 11/05/2006, 23h12
  4. Paramètre FILE* dans une fonction...
    Par James_ dans le forum C
    Réponses: 16
    Dernier message: 19/01/2006, 16h21
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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