Comment récupérer ligne par ligne dans un fichier texte

Fermé
levaeric Messages postés 3 Date d'inscription vendredi 1 mars 2013 Statut Membre Dernière intervention 14 mars 2013 - 1 mars 2013 à 03:57
omaflak Messages postés 26 Date d'inscription jeudi 28 juin 2012 Statut Membre Dernière intervention 4 mars 2013 - 2 mars 2013 à 18:44
Bonjour,

Je suis encore novice en c++..mais à l'apprentissage

Je dois faire la lecture d'un fichier texte pour traiter des commandes.

Le format de celui-ci est le suivant:

7000 3601 - represente le no d'un vendeur, no du client = ListeCommande et noeud commande
345 10 - premier chiffre est pour le code du produit , le deuxième chiffre est pour la quantité=ListeCommandeDetail et noeud commandeDetail
568 1- premier chiffre est pour le code du produit , le deuxième chiffre est pour la quantité
803 1- premier chiffre est pour le code du produit , le deuxième chiffre est pour la quantité
567 3- etc ..
0 0 - représente la fin de la première commande
8000 2164
850 1
0 0

J'ai commencé une première fonction(vraiment pas certain de son bon fonctionnement) me permettant de lire dans le fichier

J'aimerais savoir s.v.p. comment faire pour récupérer ligne par ligne ce fichier pour ensuite remplir les structure adéquatement ?

#include <iostream.h>
#include <fstream.h>
#include <string>
#include <stdio.h>
#include "commande.h"
#include "CommandeDetail.h"
#include "ListeCommande.h"
#include "ListeCommandeDetail.h"
void lire_commande()
{
ListeCommande maListeCommande;
maListeCommande.tete=NULL;
maListeCommande.queue=NULL;
maListeCommande.taille=0;
ListeCommandeDetail maListeCommandeDetail;
maListeCommandeDetail.tete=NULL;
maListeCommandeDetail.queue=NULL;
maListeCommandeDetail.taille=0;
Commande *tabC;
CommandeDetail *tabCD;
int client;
int vendeur;
int quantite;
int produit;
FILE *tmpCommande;
ifstream myFile;
tmpCommande = fopen("commande.don","r");
fscanf(tmpCommande,"%d %d",&client,&vendeur);
//getline()
while(!feof(tmpCommande))
{
tabC = new Commande;
tabC->noClient = client;
tabC->noVendeur = vendeur;
tabC->commandeSuiv = NULL;
if(maListeCommande.tete = NULL)
maListeCommande.tete = tabC;
else
{
maListeCommande.queue = tabC->commandeSuiv;
}
maListeCommande.taille ++;
}
tabCD = new CommandeDetail;
tabCD->noProduit = produit;
tabCD->quantiteCommande = quantite;
tabC->commandeSuiv = NULL;
if(maListeCommande.tete = NULL)
maListeCommande.tete = tabC;
else
{
maListeCommande.queue = tabC->commandeSuiv;
}
maListeCommande.taille ++;
/* else
{
tabC->commandeSuiv = maListeCommande.tete;
maListeCommande.tete = tabC;
}*/
fclose(tmpCommande);
}
A voir également:

1 réponse

omaflak Messages postés 26 Date d'inscription jeudi 28 juin 2012 Statut Membre Dernière intervention 4 mars 2013 1
Modifié par omaflak le 2/03/2013 à 18:45
Bonjour Levaeric, tu peux récupérer unes par unes les lignes de ton fichier dans un string avec la fonction getline().

Exemple:

//ouvre ton fichier en mode lecture 
ifstream fichier("C:/truc/machin/bidule.txt"); 
// puis recupere une ligne de ton fichier avec getline() 
string ligne; 
getline(fichier, ligne);


Normalement ça devrait marche...
PS : quand tu utilises la fonction getline() elle te retourne dans ton string la 1ere ligne de ton fichier, si tu l'utilise une 2eme fois elle te renverra la 2eme ligne de ton fichier ...etc
Donc pour récupérer tout ton fichier ligne par ligne tu peux faire une boucle ;)

J'espère t'avoir aide. A plus ;)
0