drcmomo
Messages postés182Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention25 décembre 2009
-
29 mars 2006 à 16:38
ebooserge
Messages postés137Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention16 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
----------------------------
ebooserge
Messages postés137Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention16 juillet 20071 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
ebooserge
Messages postés137Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention16 juillet 20071 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