Bonjour,
Je travaille sur un projet dont le but est d'extraire les informations utiles d'un fichier "dump" (de crash), afficher en .txt.
J'ai déjà réussi à récupérer la ligne contenant l'info recherchée, mais aucune idée de comment récupérer seulement l'info (ici le nom du programme ayant causé l'erreur : "JSAD0G"
Sachant que le nom change en fonction du fichier EX : ici c'est "JSAD0G" mais dans un autre dump ça peut être "FBQA0L".
Donc pas de recherche de chaine de caractère possible via strstr.
Une idée ?
Ci dessus la ligne récupérée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part *FAILING PROGRAM JSAD0G OBJ-JSAD0G +00000464 TRC-JSAD LOADSET-BASE
Puis mon code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 /* VERSION 3 : - SELECTION DES INFORMATIONS UTILES (FAILING PROGRAM) */ #include <stdio.h> #include <string.h> #include <stdlib.h> #define TAILLE_MAX 1000 int main(int argc, char *argv[]) { char * string1 = "FAILING PROGRAM"; //chaine1 char * chemin = argv[1]; //chemin FILE* entree = fopen(chemin, "rb"); //Lecture en binaire FILE* sortie = fopen("sortie.txt", "wb+"); //Lecture/Ecriture en binaire char chaine[TAILLE_MAX] = ""; char chaine2[TAILLE_MAX] = ""; if (argc != 2) { //Si problème de paramètres printf("usage: %s fichier\n", argv[0]); return EXIT_FAILURE; } if(entree != NULL){ //Lecure ligne par ligne for(int ligne = 1; ; ligne ++){ char * resultat = fgets(chaine, TAILLE_MAX, entree); if(resultat == NULL) break; if (strstr(chaine, string1) != NULL){ //Recherche de la chaine demandée fprintf(sortie, "%s", chaine); //Ecriture dans fichier de sortie (txt) } } } else(printf("Fichier introuvable ou impossible a lire\n")); fclose(entree); fclose(sortie); }
PS : Si vous vous demandez pourquoi je lis et j'écris en binaire, car le ficher dump de base est en hexa ou binaire et est mal convertit, donc impossible à lire autrement. D'où les caractères bizarres en début de ligne.
Partager