begin process at 2012 05 29 04:48:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

fonction avec un type file*


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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.

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,123 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales