Lecture écriture dans un fichier

[Résolu]
Signaler
Messages postés
1
Date d'inscription
lundi 4 avril 2005
Statut
Membre
Dernière intervention
23 mai 2005
-
Messages postés
22
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
1 août 2005
-
bonjour

mon pb n'est pas bien original et je cherche toujours parmis les réponses déjà proposés ue solution seulement les différents programmeurs n'uilisent pas les mêmes methodes et je voudrais qqchose le plus simple possible, de plus mon pseudo parle pour lui même, je ne suis que débutant, je passerai volontier plus de temps
voila mo pb : j'ai un fichier à lire . sa veritable extension est .csv mais il peut etre lut par n'importe quel editeur de texte, il contient énormément de données que je voudrais extraire et celle ci se présente comme suit :

2003050100;81;0;210;4;11.1;
2003050101;81;0;220;6;11.2;
2003050102;83;0;210;4;10.9;
2003050103;83;0.2;220;5;11;
2003050104;77;0;200;4;10.8;3
2003050105;75;0;200;5;10.4;3
2003050106;72;0;200;4;10.8;3
2003050107;76;0;200;5;12;3

bien sur, je voudrais séparer très précisément chacune des données ( séparés par les points virgules ) mais aussi par les lignes ( chaques lignes correspont en fait à une heure ) et les stocker qqpart dans mon prog mais je ne sais pas manipuler les chaines de caractères alors ... voila si vous avez une idée ... j'avais aussi pour l'histoire esssayer de reprendre une idées de prog mais ça ne marchais pas impeccablement peut etre parce que le fichier était trop gros ( je n'extractais pas toutes les données ) , mais ça me semble bizzare, bref j'ai bcp de questions . dsl de vous embéter avec du vu et du revu mais j'ai besoin d'aide
merci d'avance

1 réponse

Messages postés
22
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
1 août 2005

je te met ici une procedure qui n'est surement pas optimale mais ça peut t'aider. Je ne l'ai pas testé, il doit certainement y avoir des erreurs à la compil mais faciles à résoudre :


void CVeriFlagDlg::taprocedure (CString user)//nom de la procedure
{
CStdioFile fichier_entree,fichier_sortie; //declaration des fichier
CString ad1 = "[file://userdata//%22+%22//userdata.txt ton chemin du fichier d'entree]";//construction de l'adresse où se trouve le fichier
CString ad2 = "[file://userdata//%22+%22//userdata.txt ton chemin du fichier de sortie]";//construction de l'adresse où se trouve le fichier


if ((!fichier_entree.Open(ad1, CFile::modeRead | CFile::typeText))&&(!fichier_sortie.Open(ad2, CFile::modeReadWrite | CFile::typeText)))//ouverture des fichiers
AfxMessageBox ( "Fichiers inaccessibles" );//message le cas échéant
else
{
CString ligne, str;


while (fichier_entree.ReadString(ligne)) //tant qu'on peut lire une ligne dans le fichier, faire :
{
while (ligne.Left(2)!="\n")//tant que l'on est pas à la fin de la ligne
{
if( ligne.Left(1)!=";")//si le premier caractère lu n'est pas ';'
{
str=str+ligne.Left(1);//le rentrer dans la chaine str
}
else
{
fichier_sortie.WriteString(str+"\n");//on ecrit la chaine dans le fichier sortie
str="";//on reinitialise la chaine
}
ligne= ligne.Right(ligne.GetLength()-1);//on enleve le caractère lu de la ligne
}
fichier_sortie.WriteString("---\n");//pour séparer les lignes
}
fichier_sortie.Close();
fichier_entree.Close();
return;
}
}


J'espère que ça pourra t'aider


redam