Extraction des données

drcmomo Messages postés 182 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 25 décembre 2009 - 29 mars 2006 à 16:38
ebooserge Messages postés 137 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 16 juillet 2007 - 30 mars 2006 à 10:27
bonjour
je dois extraire toutes les lignes qui ont "SUIVI;SEREXP2;Création index //1772" dans un fichier txt sur visualC++ comment faire apres la lecture du fichier .
aidez moi SVP
PS: je separe les lignes par -------(mais ds le fichiers elles sont pas comme sa)

1003314887;06/02/2006 17:27:38:467;8518;SUIVI;SEREXP2;Création index //1772 - fenetre 103;2b;2;Fenêtre de visualisation : 103;1;0;0;idem exploitation;3,1,2
----------------------------------------------
1003314888;06/02/2006 17:34:26:590;8527;SUIVI;SEREXP2;Rectif ecart hor impossible emetteur FICHIER;2b;2;Message recu : R 28 152951 152951 (fenêtre : 219);1;0;0;idem exploitation;3,1,2
---------------------------
1003314889;06/02/2006 17:34:49:357;8518;SUIVI;SEREXP2;Création index //1773 - fenetre 103;2b;2;Fenêtre de visualisation : 103;1;0;0;idem exploitation;3,1,2
-------------------------
1003314890;06/02/2006 17:40:28:970;8518;SUIVI;SEREXP2;Création index //1774 - fenetre 271;2b;2;Fenêtre de visualisation : 271;1;0;0;idem exploitation;3,1,2
-------------------------
1003314891;06/02/2006 17:41:42:017;4502;SNPI;SEREXP1;DIFFERENCE PROGRAMMATION SUIVI ORIGINE 117;2b;2;Train inattendu sur origine 117 index programmé 72543 index suivi 153247;1;0;1;idem exploitation;3
----------------------------

4 réponses

ebooserge Messages postés 137 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 16 juillet 2007 1
29 mars 2006 à 21:44
en voila une mauvaise idée d'enregistrer des données dans un fichier txt. une base de données aurait été plus indiquée.
cela dit tu peux bien extraire les info a condition que ton fichier soit scrupuleusement bien ordonné
1-/ d'abord tu parcourt le fichier et tu extrait les données ligne par ligne
2-/ dans la meme boucle tu recherche la chaine de caractere voulue
3-/si trouvé alors faire traitement spécifique avant de passer a la ligne suivante, sinon passer directement a la ligne suivante.

char line[200];//tu mettra la taille maximale de ligne de ton fichier
char chaine[] = "SUIVI;SEREXP2;Création index //1772";
int a=0, b, c;
while(a < sizeof(fichier))
{
b=0;
SecureZeroMemory(line,sizeof(line));//tu effaces a chaque le buffer a chaque passage dans la boucle
while(fichier[a]!='\n' && fichier[a]!='\0')
{
line[b]=fichier[a];
a++;
b++;
}//while(fichier[a]!='\n' && fichier[a]!='\0')
//arrivée ici, la ligne est extraite du fichier. tu peux maintenant verifier si ta chaine est presente dedans
if(strstr(line,chaine))//la fonction strstr verifie si chaine apparait dans line. si elle ne trouve pas, elle retourne NULL
{
//tu peux faire a l'interieur de cette condition le traitement que tu veux sur les lignes
//qui contiennent ta chaines de caractere
}//if(strstr(line,chaine))
a++;//on passe a la ligne suivante du fichier
}//fin parcourt du fichier

en esperant avoir répondu a ta question...
0
drcmomo Messages postés 182 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 25 décembre 2009
29 mars 2006 à 21:53
ou lala merci tu m'a sauvé la vie je te dois un verre, je vais verifier mille merci.
0
drcmomo Messages postés 182 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 25 décembre 2009
29 mars 2006 à 22:15
BONSOIR!!!

cette fonction me permet d'ouvrir le fichier
tu peux m'indiquer ou je dois mettre e code que tu m'a envoyé desolé jsuis un vrai debutant.

#include<stdlib.h>
#include<conio.h>
#include <stdio.h>
#include
#include <fstream.h>
#define LongMax 3000


char c;


void main (void)
{


const char*Alarm = "Alarmes.txt";
FILE *fp;
char Ligne [LongMax+1];
char *tp;
fp = fopen(Alarm,"r");
c=fgetc(fp);
//while((c=fgetc(fp)) != NULL)


//putchar(c );//Affichage dans la console



cout<<fgetc(fp);
//if(fp.find("SUIVI",0)!=-1)
//{cout<<"la chaine a ete trouvee";}
//else
//{
// cout<<"la chaine n'a pas ete trouvee";


while(!feof(fp)){


cout<<fgets(Ligne,LongMax,fp);


}
fclose(fp);


//}
//while(FichierSortie)
//{
//cout <<"FichierSortie";
//cout<<"\n";
getchar();
}


merci d'avance
0
ebooserge Messages postés 137 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 16 juillet 2007 1
30 mars 2006 à 10:27
//une fois le fichier ouvert avec fopen, tu fais une petitte boucle pour ecrire le contenu du fichier dans un buffer
int a=0;
char contenuFichier[TAILLE_FICHIER];//pour récupérer la taille du fichier je te laisse faire
SecureZeroMemory(contenuFichier,sizeof(contenuFichier));//tu remplis le buffer avec des zeros. c'est plus propre
while(a < TAILLE_FICHIER)
{
contenuFichier[a] = fgetc(pointeurFic);
a++;
}
//maintenant tu as un buffer qui contient ton fichier, tu peux refermer le fichier avec fclose pour le rendre dispo pour d'autres prog.
fclose(pointeurFic);
//maintenant tu peux parcourir le buffer comme je t'ai indiqué dans ma 1ere réponse.

ps: kan tu te seras fait la main, il faudra penser a laisser tomber ces vieilles fonctions du C et utiliser des fonctions comme CreateFile, ReadFile, WriteFile, CloseHandle de Win32. Elles sont plus souples d'utilisation

enjoy
0
Rejoignez-nous