Lecture de fichier .txt

Résolu/Fermé
momomm Messages postés 41 Date d'inscription dimanche 10 mars 2013 Statut Membre Dernière intervention 24 avril 2022 - Modifié par baladur13 le 15/01/2016 à 18:49
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 15 janv. 2016 à 18:46
Salut tout lmonde me vla moi et mes question !
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:

2 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
13 janv. 2016 à 21:04
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
0
momomm Messages postés 41 Date d'inscription dimanche 10 mars 2013 Statut Membre Dernière intervention 24 avril 2022 1
14 janv. 2016 à 10:54
Salut !
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
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
15 janv. 2016 à 18:46
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.
0