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

Aldarek 47 Messages postés mercredi 25 mai 2005Date d'inscription 29 juin 2005 Dernière intervention - 9 juin 2005 à 16:05 - Dernière réponse : BunoCS 13843 Messages postés lundi 11 juillet 2005Date d'inscription 23 mai 2018 Dernière intervention
- 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

BunoCS 13843 Messages postés lundi 11 juillet 2005Date d'inscription 23 mai 2018 Dernière intervention - 10 juin 2005 à 09:29
+3
Utile
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...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BunoCS
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 9 juin 2005 à 16:19
0
Utile
Et pourquoi tu ne compterais pas les '\n' ???


void Aurevoir( void ); //Bonne journée
Commenter la réponse de cs_Joky
BunoCS 13843 Messages postés lundi 11 juillet 2005Date d'inscription 23 mai 2018 Dernière intervention - 9 juin 2005 à 16:23
0
Utile
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
Aldarek 47 Messages postés mercredi 25 mai 2005Date d'inscription 29 juin 2005 Dernière intervention - 9 juin 2005 à 17:02
0
Utile
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
BunoCS 13843 Messages postés lundi 11 juillet 2005Date d'inscription 23 mai 2018 Dernière intervention - 9 juin 2005 à 18:18
0
Utile
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
Aldarek 47 Messages postés mercredi 25 mai 2005Date d'inscription 29 juin 2005 Dernière intervention - 9 juin 2005 à 18:51
0
Utile
Il faut que je fasse un getline c'est bien ca??

std::getline( fichier, line );
Commenter la réponse de Aldarek
Aldarek 47 Messages postés mercredi 25 mai 2005Date d'inscription 29 juin 2005 Dernière intervention - 9 juin 2005 à 19:18
0
Utile
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
Aldarek 47 Messages postés mercredi 25 mai 2005Date d'inscription 29 juin 2005 Dernière intervention - 9 juin 2005 à 19:19
0
Utile
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.