Bonjour,
J'aimerais savoir comment récupérer "0G" dans la chaine "*FAILING PROGRAM JSAD0G OBJ-JSAD0G +00000464 TRC-JSAD LOADSET-BASE " stockée dans displayProgramVersion().
En sachant que "OG" est la version du programme qui à crash et "JSAD" est le programme. Mais le programme change en fonction du dump, donc il faut récupérer "OG" à l'aide d'un déplacement.

Voici 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_SIZE 136
 
char * binstr(char * bin, int lngmax, const char * str){
        int lngstr = strlen(str);
        char * ret = NULL;
        for(int i=0; i<lngmax-lngstr; i++){
            if(memcmp(bin+i,str,lngstr)==0){
                ret=bin+i;
                break;
            }
        }
        return ret;
}
 
struct s_search {
    char *searched_value;
    char *id;
    bool found;
    int size;
    void (*other_treatment)(char *);
};
 
void displayProgramVersion(char *str) {
 
}
 
int main(void) {
        struct s_search search[]={
            {"FAILING PROGRAM              ","Prgm : ",false,4,displayProgramVersion},
            {"DATE - ","Date : ",false,5,NULL},
            {"TIME - ","Heure : ",false,8,NULL},
            {"START OF POST PROCESSING RUN FOR DUMP ","Ref : ",false,4,NULL},
            {"SYSTEM ERROR NUMBER   ","Ctrl : ",false,11,NULL},
        };
 
        int nsearch=sizeof(search)/sizeof(search[0]);
        int numline=0;
        FILE* infile = fopen("./Dumps/dumpJSAD.txt", "rb");
        FILE* outfile = fopen("sortie.txt", "wb");
        char read_line[MAX_SIZE];
 
        if(infile != NULL){
            while(fgets(read_line,sizeof(read_line),infile)) {
                numline++;
                for(int i=0;i<nsearch;i++){
                    if(!search[i].found) {
                        char *rc=binstr(read_line,MAX_SIZE,search[i].searched_value);
                        if(rc) {
                            fprintf(outfile,"%d-%s%.*s\r\n",numline,search[i].id,search[i].size,rc+strlen(search[i].searched_value));
                            if(search[i].other_treatment!=NULL)
                                search[i].other_treatment(read_line);
                            search[i].found=true;
                        }
                    }
                }
            }
        }
        fclose(infile);
        fclose(outfile);
}
En gros que mettre dans ma fonction displayProgramVersion();

Merci de votre temps