Extraction d'un texte dans un fichier *.txt

sir51 Messages postés 15 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 23 mars 2004 - 2 déc. 2003 à 09:19
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 - 2 déc. 2003 à 10:46
bonjour,

je suis etudiant, et je debute le c++. J'ai un DM a rendre .
Sujet :extraire un champ texte dans un fichier txt prealablement creé... Help!!!, je m'en sors pas

Aidez moi SVP.....Merci

:sad)

10 réponses

Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
2 déc. 2003 à 10:03
oula, vaste sujet, tu as plein de possibilité !
fopen puis fread (ou CreateFile, ReadFile en win32) puis un pointeur sur la chaine pour décortiquer précisément ce que tu veu !

ta aussi tout les fgets, gets, fgetc, etc etc...

et encore d'autres méthodes spécifique c++ ou MFC (mé jlé connais pas bien)

tt dépend de ce que tu souhaitent faire précisément (enfin de ce que le DM te demande), mais si tu veux prendre tt le fichier dans un buffer : 1ere méthode (sans le pointeur après)
0
sir51 Messages postés 15 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 23 mars 2004
2 déc. 2003 à 10:07
le sujet : on a un fichier txt formaté comme suit : "nom prenom note" et ainsi de suite a chaque ligne..On doit sortir le nom et prenom qd la note>10...Voila en bref le sujet..

Merci en core pour ton aide...
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
2 déc. 2003 à 10:14
ce que tu sais pas faire, c'est l'algo ? ou bien c'est sa traduction en c++ ?

ouvrir fichier
tant que pas fin de fichier
   lire caractere
   tant que caractere différent de espace faire
     ajouter caractere à la chaine nom
     lire caractere
   fin tant que
   lire caractere
   tant que caractere différent de espace faire
     ajouter caractere à la chaine prenom
     lire caractere
   fin tant que
   lire caractere
   tant que caractere différent de espace faire
     ajouter caractere à la chaine note
     lire caractere
   fin tant que
   si note numérique >10 alors
     afficher nom prénom et note
   fin si
   lire caractere
   tant que caractere différent de fin de ligne faire
     lire caractere
   fin tant que
fin tant que
fermer fichier


ou un truc comme ca ....
0
sir51 Messages postés 15 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 23 mars 2004
2 déc. 2003 à 10:18
au niveau algo c ok ( ton "truc comme ca" m'indique que j'etais bien parti), mais c'est la traduction en c++ qui me pose probleme...

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
2 déc. 2003 à 10:22
ok, 2 possibilités :
-si tu est sur que ton fichier est pas très gros, tu peut tt mettre dans un buffer (fopen, fread) et ensuite le décortiquer avec un pointeur (moins d'acès au disque)
-sinon, utilise gets() pour lire ligne par ligne, et décortiquer également avec un pointeur (meilleur solution a mon gout)
0
sir51 Messages postés 15 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 23 mars 2004
2 déc. 2003 à 10:27
cool merci, tu me retire une foret du pied...

encore merci et bonne journee a toi

;)
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
2 déc. 2003 à 10:31
de rien, si tu as un pb, n'hésite pas a demander
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
2 déc. 2003 à 10:32
alors, je vais essayer de te traduire ca à la volée ...

FILE *stream;
char name[50];
char buf[2];
strcpy(name,"");
if( (stream  fopen( nomDuFichier, "r" )) NULL )
  return 1;
while( !feof( stream ) )
{
  fread( buf, sizeof( char ), 1, stream );
  while (strcmp(buf," ")!=0)
  {
      strcat(name,buf);
      fread( buf, sizeof( char ), 1, stream );
  }
 ....
 if (atoi(note)>10)
     cout << name <<note ....;
}
   fclose( stream );


donc c juste une idée, à pas prendre comme argent comptant
0
sir51 Messages postés 15 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 23 mars 2004
2 déc. 2003 à 10:43
encore merci a vous tous pour votre aide et votre disponibilité (quasi en temps reel)... au niveau DM, je devrais cartonner...

Merci et a tres bientot...
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
2 déc. 2003 à 10:46
Bon, effectivement ce code devrait marcher, par contre jsuis désolé mais ce n'est pas vraiment la bonne solution en tps normal pour plusieurs raison :
1/ tu lit caractère par caractère, ca marche mais c'est vraiment pas terrible coté performances
2/ tu fait un strcmp à chaque fois, idem que dans 1/, on peut très bien s'en passer
3/ les pointeurs sont vraiment très utiles et s'il arrivent à les manier c'est déjà ca d'apris pour un débutants (^_^)

Mais bon, je critique, mais tu n'as ptet pas besoin d'un truc parfais (surtt que le fichier est sans doute tt petit) alors si tu t'en fout, vas y les yeux fermés, pas de bug a priori
0
Rejoignez-nous