Ma fonction doit-elle retourner un pointeur de fichier ou un entier ? - C - Programmation
Marsh Posté le 17-05-2008 à 00:17:55
tu peux renvoyer un FILE* créé dans une fonction. Pas de problème pour renvoyer des pointeurs. D'ailleurs c'est ce que fait fopen().
Marsh Posté le 17-05-2008 à 00:19:52
koskoz a écrit : Là où je coince un peu, c'est avec la manipulation de mon pointeur fichier. |
C'est un pointeur vers une structure qui décrit le fichier et qui est utilisée par les fonctions comme fopen() et fclose() pour le manipuler.
koskoz a écrit : Le problème, c'est que je ne suis déjà pas sûr de comment déclarer l'entête de mes autres fonction. |
Ta fonction retournera l'adresse d'une structure FILE donc tant que l'adresse sera valide (jusqu'au fclose()) il n'y aura pas de problème. C'est avec les variables locales qu'il faut faire attention, elles ne sont plus utilisables en dehors du bloc où elles ont été définies.
Par exemple ce code a l'air de fonctionner :
Code :
|
Marsh Posté le 17-05-2008 à 09:03:31
Je ne vois pas trop l'intérêt de la fonction FILE *chargement_fichier (char const *nom) ?!
Marsh Posté le 17-05-2008 à 20:57:30
Ça dépend de l'utilisation du fichier, est-ce uniquement un fichier qui contient des données destinées à être lues ou autre chose, est-il mis à jour régulièrement ?
Quelles sont les conséquences s'il y a un crash et que les données sont endommagées.
Marsh Posté le 18-05-2008 à 11:00:02
Dans ce cas tu peux le garder ouvert et trimballer ta variable au gré des fonctions du programme (les variables globales c'est pas beau, mis dans ce cas précis, ça pourrait être envisagé !)
Marsh Posté le 19-05-2008 à 13:09:19
Ta fonction retourne NULL (enfin le fopen), à toi de traiter ce cas dans ton programme.
Marsh Posté le 19-05-2008 à 15:45:37
En se basant sur ceci
Code :
|
ta fonction retourne NULL non ?
Je ne comprends pas exactement ce que tu veux dire par
Citation : en cas de non ouverture de fichier je ne sais pas ce qu'elle doit retourner vu que NULL n'est pas accepté. |
Au fait
Citation : Le fichier est destiné à être lu pour stocker ses données dans un tableau, c'est tout. |
Le fichier doit être lu et tu l'ouvres en écriture ???
Marsh Posté le 19-05-2008 à 16:18:41
Une fonction chargement_fichier d'1 ligne qui ne charge pas le fichier, mais l'ouvre en écriture/troncature, c'est un très bon nom.
Marsh Posté le 24-05-2008 à 18:28:11
Il parle du code proposé par Dap++
Marsh Posté le 24-05-2008 à 18:55:55
C'était pour montrer un exemple de fonction qui retourne un FILE* à partir de ce que koskoz avait dit sur son problème, après il en fait ce qu'il veut.
Marsh Posté le 16-05-2008 à 23:51:14
Salut tout le monde,
je suis en train de développer une petite application qui nécessite de manipuler des fichiers.
Pour n'avoir à ouvrir mes fichiers qu'une seule fois, je passe par une fonction "chargement_fichier" qui charge mon fichier dans un pointeur de type FILE et qui retourne 0 ou 1 en fonction de l'ouverture ou non du fichier.
Là où je coince un peu, c'est avec la manipulation de mon pointeur fichier.
Etant déclaré en local de ma fonction (FILE *fichier) c'est un pointeur qui pointe vers le contenu de fichier si je ne dis pas de bêtises.
Par contre je ne sais pas trop comment le manipuler en dehors de cette fonction.
En effet, mes autres fonctions prennent en paramètre ce fichier (pour ne pas devoir le ré ouvrir à chaque fois).
Le problème, c'est que je ne suis déjà pas sûr de comment déclarer l'entête de mes autres fonction.
Je dois remettre FILE *fichier ? Est-ce que ça va manipuler le même pointeur que celui de ma fonction "chargement_fichier" ?
Lorsque je vais appeler une fonction, l'appel se fera ainsi : ma_fonction(paramètre, &fichier). Je dois donc définir un pointeur de fichier pour appeler ma fonction ?
Je ne sais pas si j'ai été très clair, mais ça reste confus pour moi aussi
Merci d'avance pour l'aide.
---------------
Twitter