Rechercher une chaine dans un tableau
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 ?
Code:
*FAILING PROGRAM JSAD0G OBJ-JSAD0G +00000464 TRC-JSAD LOADSET-BASE
Ci dessus la ligne récupérée.
Code:
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);
} |
Puis mon code.
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.