Comment recup lign par lign d'un .txt ET comment obtenir le contenu d'un reperto

Signaler
Messages postés
8
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
27 décembre 2005
-
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
15 janvier 2013
-
Bonjour à tous,

Dans un fichier.txt, je sauvegarde un mail. A savoir :
-premiere ligne : l'expediteur
-deuxième ligne : l'objet du mail
-troisieme ligne : la date
-quatrième ligne : l'heure
-cinquième ligne jsuqu'à fin du fichier : les données

Maintenant j'aimerais recuperer ces données mais ligne par ligne. Donc creer une fonction qui me recupere juste l'expediteur
une
autre la date etc ou pas forcement une fonction mais que je puisse recup ces données independemment Et la est le probleme je n'y arrive pas. Je
recupere seulement en un seul bloque à l'aide de la fonction getline
tout mon fichier .

Ainsi comment faire

Voici deja comment j'ai procedé pour tout recuperer :

ifstream lire(temp.c_str() , ios::out);

char adresse[255];

if (!lire) cout<<"Erreur d'ouverture du fichier Mail"<<endl;
else

cout<<"Ouverture reussi du fichier Mail numero
"<<numero<<" : lecture en cours"<<endl<<endl;

do
{
lire.getline(adresse,256);
cout<<adresse<<endl;
}
while(!lire.eof());

J'ai deja posé ce prb la semaine dernière pensant avoir trouvé la solution mais en vain après 4 jours efforts et un bon repas de noel au milieu je n'y suis pas arrivé.

AUTRE PRB qui me desespere : comment lister, recuperer le nom de tout mes fichiers que j'ai dans un dossier. Ces fichier etant tous des .txt

Merci d'avance de votre aide .

5 réponses

Messages postés
207
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
2 novembre 2006

Salut !

char * buffer => contenu du fichier (fread, ou autre)

char *c = position courante dans buffer (0 pr démarrer)
c++;char* d strstr( "\r\n" );> sous windows (dépend de la manière dont tu enregistres le fichier)
*d = 0;

char* str = (char*)malloc( (int)d-c );
for( int i=0; i<(d-c); i++ )
str[i] = c[i];
// gestion de la chaine ...
free( str );

Bon, c'est pas forcement juste juste, mais ça te donne une idée comment faire...
Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006

Bonjour
Je suppose que tu est sous Windows.
Pour lister le contenu d'un repertoire, vois du coté de FindFirstFile :


Syntax


HRESULT FindFirstFile(
LPCWSTR wsSearchFile,
LPWIN32_FIND_DATAW pFindFileData,
LPHANDLE pSearchHandle
);


Parameters



* wsSearchFile : Pointer to a null-terminated string that contains the file name to find.
* pFindFileData : Pointer to a WIN32_FIND_DATA structure that receives information about the file or subdirectory that has been found.
* pSearchHandle : <DD>Pointer to a variable that receives a handle that can be used for subsequent calls to the IWPSiteW::FindNextFileIWPSiteW::FindClose functions.


Puis FindNextFile y a plein d'exemple donc un dans une de mes sources.
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Salut,

2 points :
- ouvrir un ifstream avec ios::out ? quelle idée bizarre.
ifstream file( filename.c_str() ); // suffit

- pour lire une ligne complête dans un fichier :
std::string line;
getline( file, line );
Messages postés
8
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
27 décembre 2005

J'ai essayé la methode à Hylvenir mais ca ne marche tjs pas.

Qq aurait-il une autre idée svp.

Merci
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
15 janvier 2013

Salut voila comment je ferais pour récupérer les données d'un fichier ligne par ligne :


//Déclaration de tes variables
char szExpediteur[256] = "", szObjet[256] = "", szDate[256] = "", szHeure[256] = "";



//Ouverture du fichier contenant les données
FILE *file = fopen("Chemin_de_ton_fichier", "r");



//Récupération des données
fgets(szExpediteur, 256, file); szExpediteur[strlen(szExpediteur)-1] = '\0';
fgets(szObjet, 256, file); szObjet[strlen(szObjet)-1] = '\0';
fgets(szDate, 256, file); szDate[strlen(szDate)-1] = '\0';
fgets(szHeure, 256, file); szHeure[strlen(szHeure)-1] = '\0';



//Fermeture du fichier
fclose(file);

N'oublie pas d'inclure le header stdio.h.
Pour lister les fichiers, utilise FindFirstFile et FindNextFile comme te l'as dit yserver.
Cherche dans les codes sources des explorateurs windows, si tu n'y arrive pas demande et je posterais un exemple.

NeoUmbrella Corp.