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 :

lecture de fichier


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant En dev jeux video ESGI. Dev c/c++
    Inscrit en
    Novembre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Etudiant En dev jeux video ESGI. Dev c/c++

    Informations forums :
    Inscription : Novembre 2012
    Messages : 63
    Par défaut lecture de fichier
    Bonjour,

    Ce post ce situe toujours dans le meme contexte que celui ci
    http://www.developpez.net/forums/d12...e/#post6973976 c-a-d le coage du grep en c

    alors voila.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include"my_grep.h"
     
    int main(int argc,char** argv)
    {
    	t_parametre parametre;
     
    	parseur_parametre(argc,argv,&parametre); 
    	load_file(&parametre); // la probleme ce situe ici !!!
     
    	return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int read_file(t_parametre c_parametre,FILE *file) // t_parametre est une   
                                                                           //stucure
    {
    	char temp[1000];
    	while(fgets(temp,1000,file)) // c'est i ici que sa plante ...
    	{
    		// va yavoir quelaue chose ici ....
    	}
    }
    j'ai oublie de mettre ce code ...

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    int load_file(t_parametre *c_parametre)
    {
    	int i = 0;
    	FILE* fichier = NULL;
    	BOOL not_found = FALSE;
    	// the name file(pattern) cannot to be in argv[0] 
    	//c_parametre->str_cmd[2] = "C:\\Dev\\a_geter\\grep\\Debug\\toto.txt";
    	for(i=1;c_parametre->str_cmd[i] != "\0";i+=1)
    	{
     
    		fichier = fopen(c_parametre->str_cmd[i],"r");
    		if(!fichier)//if don't open or not found the pattern
    		{
    			//pattern don't match
    			continue;
    			//not_found = FALSE;
    		}
    		else
    		{
    			// partern founded
    			read_file(c_parametre,*fichier);
    			not_found = TRUE;
    		}
     
    	}
    	if(not_found == FALSE)
    	{
    		My_Error();
    		exit(1);
    	}
    	fclose(fichier);
     
    	return(0);
    }

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Il faut passer fichier à read_file(), pas *fichier.
    Et read_file() devrait attendre un t_parametre *, pas un t_parametre.

  3. #3
    Membre confirmé
    Homme Profil pro
    Etudiant En dev jeux video ESGI. Dev c/c++
    Inscrit en
    Novembre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Etudiant En dev jeux video ESGI. Dev c/c++

    Informations forums :
    Inscription : Novembre 2012
    Messages : 63
    Par défaut
    Pourquoi unpasser à read file() un fichier au lieu de *fichier ...?

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Pour parametre il envoie bien une adresse avec '&'.

    Ton if continue c'est un peu laid.

    Faire un if fichier != null c'est un peu plus propre que de mettre un block vide.

    Et dans ta boucle met != null sur le retour de fgets c'est un peu plus propre aussi.

  5. #5
    Membre confirmé
    Homme Profil pro
    Etudiant En dev jeux video ESGI. Dev c/c++
    Inscrit en
    Novembre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Etudiant En dev jeux video ESGI. Dev c/c++

    Informations forums :
    Inscription : Novembre 2012
    Messages : 63
    Par défaut
    heu j'ai remplace *fichier par fichier .... et la sa compile plus ...

    Deplus j'ai un cannot convert from FILE* to FILE alors que je ne vois pas ou j'ai pue .... vouloir faire une convertion .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int read_file(t_parametre *c_parametre,FILE);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read_file(c_parametre,fichier);

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si tu souhaites pouvoir passer un pointeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int read_file(t_parametre c_parametre,FILE *file)
    Avec son utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FILE *fichier;
    /* ... */
    read_file(c_parametre, fichier);
    Remarques :
    • fclose(fichier); à mettre dans la boucle for, histoire de fermer tous les fichiers ouverts.
    • Attention aux lignes
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      for(i=1;c_parametre->str_cmd[i] != "\0";i+=1)
      c_parametre->str_cmd[i] = "\0";
      "\0" représente une chaine de caractères. Donc pour assigner et comparer, on utilise strcpy et strcmp. Je t'invite à relire le message de jouana.
    Dernière modification par Invité ; 12/11/2012 à 13h34.

  7. #7
    Membre confirmé
    Homme Profil pro
    Etudiant En dev jeux video ESGI. Dev c/c++
    Inscrit en
    Novembre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Etudiant En dev jeux video ESGI. Dev c/c++

    Informations forums :
    Inscription : Novembre 2012
    Messages : 63
    Par défaut
    @Winjerome

    j'ai pas mis de * à file parce que c'est ce que me recommandais matafan

    merci de ton conseil pour flclose .. t'inquiete j'avais prevue de le faire ...

    Puis apres pour "\0", j'ai bien verifier en pas à pasil comprend bien que j'ai une chaine de caractere avec le code asciii du '\0'

  8. #8
    Invité
    Invité(e)
    Par défaut
    Il t'a conseillé de l'enlever ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read_file(c_parametre,*fichier);
    Mais en aucun cas dans le prototype de la fonction.

    Pour le reste je t'invite à consulter cette discussion. ('\0', un seul caractère est à différencier de "\0", chaine de caractères).

  9. #9
    Membre confirmé
    Homme Profil pro
    Etudiant En dev jeux video ESGI. Dev c/c++
    Inscrit en
    Novembre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Etudiant En dev jeux video ESGI. Dev c/c++

    Informations forums :
    Inscription : Novembre 2012
    Messages : 63
    Par défaut
    Merci, jsuis vraiment con ... l'avoir changer dans le prototype Meric bcp... je ne fait que des fautes de debutants ... et sa m'enerve!!

    Parcontre je maintient que j'ai raison pour le "\0" parce que l'interpretteur considere que '\' comme un caractere speciaux qui invitera à n (saut de ligne ) ou autre ...
    pour qu'il le prend pour un carractere dit normal ... il faut le doubler ....

    "C:\\toto\\titi\\BTS_IRIS" => C:\toto\titi\BTS_IRIS

    essaie dans ton compilateur : char temp[] = "bonjour" => char temp2[] = "bonjour\0".

    Enfin par contre si j'ai tord ... et que d'apres mon experience (j'ai souvent tord) ..., je te devrais des escuses ... j'ai pas la science infuse .... mais j'ai besoin de depenser quelque argument(se forcer à avoir en confiance en moi )

  10. #10
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Oui mais la c'est un caractère que tu vérifie pas une chaîne donc par soucis de propreté et de rigueur opte pour les simple quotte

    Et les erreurs de débutant sont les erreurs que l'ont fait le plus souvant et qui prenne le plus de temps donc ne t'en veux pas trop, repaire les bien et gagne en automatisme pour les éviter au maximum

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

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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