Accueil > Forum > > > > fonction avec un type file*
fonction avec un type file*
mardi 17 mai 2011 à 13:58:39 |
fonction avec un type file*

vercd7am
|
Bonjour,
j'ai ecrit quelques lignes de code pour pouvoir lire un fichier txt.
Code C/C++ : int main()
{
int c;
FILE *fichier = NULL;
fichier = fopen("C:\\cygwin\\home\\czdiv\\Titrebis.txt","r");
int i=0;
if (fichier == NULL)
{
printf("Fichier pas ouvert\n");
}
else
{
char lis[200];
while( (c=fgetc(fichier)) != 9 )
{
lis[i]=c;
printf("%c",lis[i]);
i++;
}
}
fclose(fichier);
return 0;
}
Jusque la rien d'extraordinaire et je n'ai pas rencontre specialement de proleme.
J'aimerai bien ecrire une fonction avec un type file* pour faire la lecture du fichier, fichier que j'aurai ouvert avant, pour pouvoir l'appeler quand je veux comme je veux. Mais la ca bloque.
Code C/C++ : void lecture(FILE *fichier)
{
int l;
int j=0;
char lec[200];
while( (l=fgetc(fichier)) != 9 )
{
lec[j]=l;
printf("%c",lec[j]);
j++;
}
}
}
Je ne comprends pas pourquoi le compilateur dit que je fais une erreur. fgetc veut un pointeur sur file, je lui fait une fonction avec un pointeur comme ca et ca ne marche pas. Quel est le probleme ?
Merci d'avance
|
|
mardi 17 mai 2011 à 15:02:20 |
Re : fonction avec un type file*

CptPingu
|
Quel est le problème ?
Compilation ou exécution ?
Chez moi ça compile très bien. Aucun souci à passer un FILE* en argument.
Un bon exemple ici:
http://www.cplusplus.com/reference/clibrary/cstdio/fgetc/
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
mardi 17 mai 2011 à 15:57:31 |
Re : fonction avec un type file*

vercd7am
|
Le probleme est lors de la compilation.
Le corps que j'avais ecrit c'etait pour tester ce que je faisais, et ca marche, et c'est ecrit d'une facon assez moche. L'idee pour rendre ca joli, et surtout beaucoup plus utilisable pour moi, c'est de remplacer tout ce qu'il y a dans la fonction entre l'ouverture du fichier et sa fermeture par la fonction que j'ai ecrite pour avoir en gros quelquechose du genre
Code C/C++ : #include <stdio.h>
#include <stdlib.h>
#include "lecture.h"
int main()
{
FILE *fichier = NULL;
fichier = fopen("C:\\cygwin\\home\\czdiv\\Titrebis.txt","r");
int i=0;
if (fichier == NULL)
{
printf("Fichier pas ouvert\n");
}
else
{
lecture(fichier);
}
fclose(fichier);
return 0;
}
ou le lecture(fichier) est la fonction que j'ai ecrite. Mais a la compilation il me renvoie une erreur comme quoi dans la fonction lecture.c et apparement aussi dans le .h, il attend ) avant *, ce qui est pour moi completement absurde.
|
|
mardi 17 mai 2011 à 16:12:04 |
Re : fonction avec un type file*

CptPingu
|
Je peux voir le fichier source que tu essaies de compiler, ainsi que l'erreur exacte et complète ?
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
mardi 17 mai 2011 à 16:43:08 |
Re : fonction avec un type file*

vercd7am
|
Oui sans probleme
Le fichier que je veux lire ressemble a ca
DEMAQUILLANTr camomille 125 ml
avec apres camomille un tab et derriere 125 egalement (pour les besoins de mon test).
Le programme que j'ai ecrit ressemble a ca
Code C/C++ : #include <stdio.h>
#include <stdlib.h>
#include "lecture.h"
int main()
{
int c;
FILE *fichier = NULL;
fichier = fopen("C:\\cygwin\\home\\czdiv\\Titrebis.txt","r");
int i=0;
if (fichier == NULL)
{
printf("Fichier pas ouvert\n");
}
else
{
char lis[200];
while( (c=fgetc(fichier)) != 9 )
{
lis[i]=c;
printf("%c",lis[i]);
i++;
}
}
lecture(fichier);
fclose(fichier);
return 0;
}
avec les ajouts suivants
Code C/C++ : void lecture(FILE *fichier); pour lecture.h
Code C/C++ : void lecture(FILE *fichier)
{
int l;
int j=0;
char lec[200];
while( (l=fgetc(fichier)) != 9 )
{
lec[j]=l;
printf("%c",lec[j]);
j++;
}
}
pour le .c
En fait la fonction est juste une reprise de ce que j'ai ecrit avant, pour pouvoir lire d'une certaine facon ce que je veux a l'endroit ou je le veux (la ou je viens de m'arreter de lire).
La premiere partie utilisee seule lit bien
DEMAQUILLANTr camomille,
mais la ou je voudrais lire ensuite 125 en faisant appel a ma fonction, ben le programme ne se lance meme pas et me renvoie une erreur de compile.
|
|
mardi 17 mai 2011 à 16:55:03 |
Re : fonction avec un type file*

CptPingu
|
Tu es sur que c'est une erreur de compilation ? Et pas une erreur d'exécution ?
Parce que ça compile chez moi... Je suis sur que c'est un souci d'exécution (compilation ok, mais le programme n'a pas le bon comportement).
En revanche, je vois un potentiel problème d'exécution. Tu lis ton fichier, mais une fois le curseur à la fin, tu ne peux pas relire ton fichier une 2ème fois...
Donc soit tu fermes et tu réouvres le fichier (bof) soit tu te remets au début de celui-ci (fonction rewind, qui veut dire rembobiner en français).
Ex:
Code C/C++ :
rewind(fichier);
lecture(fichier);
rewind(fichier);
lecture(fichier);
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
mardi 17 mai 2011 à 17:14:34 |
Re : fonction avec un type file*

vercd7am
|
ben il me renvoie a chaque fois
error : expected ')' before '*' token
build finished 1 errors, 0 warnings
pour le fichier void lecture(FILE *fichier){}
Par contre, grandement merci, je viens d'apprendre quelquechose. Je croyais que si je faisais un fclose(fichier) la prochaine fois que j'aurais fait un fopen(fichier), il me l'aurait reouvert au debut. En soi ca ne change pas grand chose ici parceque je voudrais l'ouvrir une seule fois et pas a chaque fois, mais c'est bon a savoir.
|
|
mardi 17 mai 2011 à 17:18:44 |
Re : fonction avec un type file*

CptPingu
|
Réponse acceptée !
Tu as bien mis #include <stdio.h> dans lecture.c ?
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
mardi 17 mai 2011 à 17:20:42 |
Re : fonction avec un type file*

CptPingu
|
Dans lecture.h pardon. Pense à mettre une garde aussi.
lecture.h
Code C/C++ :
#idndef LECTURE_H_
# define LECTURE_H_
# include <stdio.h>
void lecture(FILE *fichier);
#endif /* !LECTURE_H_ */
Une garde te permet d'inclure plusieurs fois le même fichier, sans conflit. Puisque seul la première inclusion comptera.
Sans garde, tu verras que tu auras beaucoup de souci :)
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
|
|
mercredi 18 mai 2011 à 09:46:04 |
Re : fonction avec un type file*

vercd7am
|
Merci pour la reponse, effectivement j'avais oublier la bibliotheque.
En ce qui concerne la garde, dois-je comprendre que si je reutilise plusieurs fois ma fonction, sans avoir fait une garde dans le .h, lorsque j'appelerai ensuite a X reprises cette fonction, cela risque de poser probleme ?
Je ne comprends pas bien le principe du truc.
|
|
Cette discussion est classée dans : fichier, fonction, code, int, file
Répondre à ce message
Sujets en rapport avec ce message
Petit probleme de code en C sur Linux !! [ par UncleShu ]
Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM
Ecriture dans un fichier [ par sebleboss2002 ]
Salut tout le monde !Ce coup-ci, j'ai un problème dans l'enregistrement de type integer dans un fichier texte. Voici mon code :#include <iostream.h&g
REcuperer des donnée d'un fichier binaire vers une tableau de hachage [ par whiteknight ]
Slt j'ai des problemes avec ma fonction load qui me permet de recuperer les données d'un fichier binaire et de les transférer vers un tableau de hacha
Integration fonction C [ par metek ]
Bonjour!!Voila j'ai une ptite question sur les API!!!J'ai fait un petit programme qui liste un fichier texte cherche un mot entré et recupere le reste
Erreurs de compilations bizarres avec Visual C++ 6 [ par VTS_35 ]
Bonjour,G encore des problèmes de compilation avec mon programme. Je me suis rendu compte que le programme allait devenir balaise, alors j'ai décidé d
Lecture dans un fichier [ par Vincentsoft ]
Salut tout le monde,J'ai un petit problème. Je veux compter (en C) le nombre d'octet d'un fichier.J'ai écris cette fonction,int TailleFichier(char *
fonction apply / template [ par pointejb ]
Bonjour à tous,Je cherche un moyen d'implémenter une fonction de type 'apply' qui prendrait en parametres une fonction et ses arguments et qui aurait
Creation de fichier [ par PLUiK ]
SalutJai fait une source qui devrait normalement me créer un fichier la voici:[b]#include int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevI
Fonction dans une structure ? [ par mayti ]
Bonjour, voilà j'esseye d'utiliser une fonction dans une structure pour par exemple effacer un fichier: struct FICHIER { char *path; sta
Fonction de lecture de fichier [ par bastet1978 ]
Bonjour, je suis nouveaux en c, et je veux utiliser une fonction pour ouvrir mes fichiers (eviter a chaque foix de tester si ouverture ok ... etc) Voi
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|