Lecture de fichier .txt
Résolu
momomm
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Salut tout lmonde me vla moi et mes question !
Tout d'abord, le code :
Le problème est a ce niveau la :
if (line==Question)
Par line==Question je voudrais sous entendre "le contenu de la ligne = la question posé"
Mais line est en fait le nombre de la ligne...!
Enfin c'est ce que je crois comprendre... Alors voila ma question : y a t-il une fonction permettant d'attribuer le contenu des ligne lue dans une variable x qui sera remplacé après vérification avec Question genre x=contenu ligne ?
Seconde question :
Pour cette partie :
Y a t-il moyen de faire Tant que fgets() etc... ET si x différent de Question ? ça me permettrait de stopper la boucle while lorsque la ligne aura été trouvé !
Je vous remercie a l'avance pour ceux qui se donneront la peine de réfléchir a ma question qui me paraît impossible !!
Tout d'abord, le code :
#include <iostream> using namespace std; #include <stdio.h> string Question("."); int LineQuestion(-1); int main ( void ) { static const char filename[] = "NomDuFichier.txt"; FILE *file = fopen ( filename, "r" ); if ( file != NULL ) { char line [ 99999 ] cin>>Question; while ( fgets ( line, sizeof line, file ) != NULL ) { if (line==Question) { printf("%s", line); } } fclose ( file ); } else { perror ( filename ); } return 0; }
Le problème est a ce niveau la :
if (line==Question)
Par line==Question je voudrais sous entendre "le contenu de la ligne = la question posé"
Mais line est en fait le nombre de la ligne...!
Enfin c'est ce que je crois comprendre... Alors voila ma question : y a t-il une fonction permettant d'attribuer le contenu des ligne lue dans une variable x qui sera remplacé après vérification avec Question genre x=contenu ligne ?
Seconde question :
Pour cette partie :
while ( fgets ( line, sizeof line, file ) != NULL ) { if (line==Question) { printf("%s", line); }
Y a t-il moyen de faire Tant que fgets() etc... ET si x différent de Question ? ça me permettrait de stopper la boucle while lorsque la ligne aura été trouvé !
Je vous remercie a l'avance pour ceux qui se donneront la peine de réfléchir a ma question qui me paraît impossible !!
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Lecture de fichier .txt
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
2 réponses
Salut,
je sais bien que le C++ c'est hyper souple et qu'on fait un peut ce qu'on veux. Mais il faudrait te décider entre C et C++...
Bref, tu en es à faire du C++, je te conseil vivement de laisser tomber les const char et de faire des string.
Regarde aussi du coté de cin, il me semble qu'il contient la methode "getline".
Ton code est trop brouillon, efface tout et recommence. Défini tranquillement les variables dont tu as besoin.
N'hésite pas à faire plein d'impression des chaines que tu lis afin de vérifier ce qu'elles contiennent.
bon chance
je sais bien que le C++ c'est hyper souple et qu'on fait un peut ce qu'on veux. Mais il faudrait te décider entre C et C++...
Bref, tu en es à faire du C++, je te conseil vivement de laisser tomber les const char et de faire des string.
Regarde aussi du coté de cin, il me semble qu'il contient la methode "getline".
Ton code est trop brouillon, efface tout et recommence. Défini tranquillement les variables dont tu as besoin.
N'hésite pas à faire plein d'impression des chaines que tu lis afin de vérifier ce qu'elles contiennent.
bon chance
http://www.cplusplus.com/reference/string/string/getline/
ne pas hésiter à lire et à chercher dans la doc, beaucoup de fonctions utile quotidiennement y sont.
Mon préférer c'est celui là : https://en.cppreference.com/w/cpp : tu regardes les différentes classes et leurs membres et rapidement ça se passe bien.
ne pas hésiter à lire et à chercher dans la doc, beaucoup de fonctions utile quotidiennement y sont.
Mon préférer c'est celui là : https://en.cppreference.com/w/cpp : tu regardes les différentes classes et leurs membres et rapidement ça se passe bien.
Merci de ta réponse en premier lieu :D
Changer les const char en string ... char n'est pas suffisement approprié dans cette situation ?
J'ai déja essayé d'y aller a coup de getline après tout c'est plus pratique que cin, mais sois mon IDE sois mon compilateur ne reconnaît pas getline... a moins que je doive me servir de la bibliothèque SDL ?
Si je me souviens bien, on fait appel a getline comme ça non ? : getline(VariableCible);
Mais lorsque je l'utilise, le message d'erreur est : no matching function for call to 'getline(std::string&)'
Pour le moment mon code contient deux include : iostream et stdio; j'avais lu quelque part qu'il fallait rajouter un include getline mais sans résultat...
Sinon ya vraiment aucune fonction pour attribuer le contenu de la ligne lue a une variable ?
Encore merci pour les futures réponses :D