Lecture ligne par ligne d'un fichier texte [Résolu]

Messages postés
47
Date d'inscription
mercredi 25 mai 2005
Dernière intervention
29 juin 2005
- - Dernière réponse : BunoCS
Messages postés
14337
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
16 janvier 2019
- 10 juin 2005 à 09:29
Bonjour à tous, je sais comment on fait pour lire un fichier ligne par ligne mais je cherche à lire une ligne particulière pour ensuite récupérer sa valeur et la mettre dans une variable...

Voici le contenu de mon fichier :
caractere : 83
sociabilite : 76
faim : 83
saleté : 83
sante : 76
points de vie : 14986
points d'évolution : 14
temps écoulé : 14

et je cherche à récupérer le 14 de temps écoulé...

Merci d'avance
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
14337
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
16 janvier 2019
5752
3
Merci
Un peu de rigueur Aldarek...

Je ne vois pas le lien entre ligne et line, c'est normal docteur??



Essaie ça:



#include <fstream>



...

std::ifstream file; // fichier dans lequel on va lire

char line[128]; // ligne lue

int tps; // temps lu



file.open("D:\\Bruno\\truc.txt"); // ouverture du fichier



while(file.getline(line, 128,'\n')) // à chaque lecture de ligne

{

if (NULL!=strstr(line, "temps écoulé")) // on cherche la chaine "temp écoulé"

{

sscanf(line,"temps écoulé : %d", &tps); // si trouvé, on lit l'entier voulu

...

}

}





Dans mon fichier truc.txt, j'ai mis:

bou : 45

temps écoulé : 14



Et le résultat de mon code est satisfaisant: tps=14



Si t'as d'autres soucis....



Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
3
0
Merci
Et pourquoi tu ne compterais pas les '\n' ???


void Aurevoir( void ); //Bonne journée
Commenter la réponse de cs_Joky
Messages postés
14337
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
16 janvier 2019
5752
0
Merci
int tps;

char line[128];



/* tu remplis line avec une ligne du fichier */



if (NULL!=strstr(line, "temps écoulé")) // cherche si la ligne courante contient la chaine "temps écoulé"

sscanf(line,"temps écoulé : %d", &tps); // si oui, tu connais le format de ta ligne donc tu peux récupérer l'entier


Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
Commenter la réponse de BunoCS
Messages postés
47
Date d'inscription
mercredi 25 mai 2005
Dernière intervention
29 juin 2005
0
Merci
Ton idée me semble parfaite merci beaucoup, seulement je l'ai testé, voici le code, et il n'arrive pas à me trouver le 14 :

std::ifstream fichier("resultat.txt");
int tps=0;
char line[128]; //tableau de caractère ou l'on va stocker la ligne


if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
{
// cette boucle s'arrête dès qu'une erreur de lecture survient
if (NULL!=strstr(line, "temps écoulé"))
{
sscanf(line,"temps écoulé : %d", &tps);
}
cout<<tps<<endl;
}

Merci beaucoup
Commenter la réponse de Aldarek
Messages postés
14337
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
16 janvier 2019
5752
0
Merci
Et oui...

T'as oublié de lire dans le fichier... et donc de remplir line!!


Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
Commenter la réponse de BunoCS
Messages postés
47
Date d'inscription
mercredi 25 mai 2005
Dernière intervention
29 juin 2005
0
Merci
Il faut que je fasse un getline c'est bien ca??

std::getline( fichier, line );
Commenter la réponse de Aldarek
Messages postés
47
Date d'inscription
mercredi 25 mai 2005
Dernière intervention
29 juin 2005
0
Merci
Désolé de t'embêter avec ca mais je vois vraiment pas ce qui ne marche pas
Voici le code :
if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
{
std::string ligne; // variable contenant chaque ligne lue


// cette boucle s'arrête dès qu'une erreur de lecture survient
while ( std::getline( fichier, ligne ) )
{
if (NULL!=strstr(line, "temps écoulé"))
{
sscanf(line,"temps écoulé : %d", &tps);
cout<<"récup tps"<<tps<<endl;
}
}
}

Merci d'avance
Commenter la réponse de Aldarek
Messages postés
47
Date d'inscription
mercredi 25 mai 2005
Dernière intervention
29 juin 2005
0
Merci
Rajout: le line est un char[128]et temps un int =0;
Commenter la réponse de Aldarek

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.