Salut,
je suis en train de tester les expressions régulières en C. Mon prog est très simple.
C'est un programme de recherche dun mot dans un fichier. Je lui passe un mot et un fichier en paramètre et le prog doit chercher la ligne où se trouve le mot. Jusqu'ici ca marche pour tous les mots sans accent.
Un exemple d'exécution :
Je poste mon code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 2401939@ari-31-305-11:/users/nfs/Etu9/2401939/master/ACI/Work$ ./regexEx salue dico pattern = salue salue trouvé à la ligne 279007 2401939@ari-31-305-11:/users/nfs/Etu9/2401939/master/ACI/Work$ ./regexEx imbécile dico pattern = imbécile Motif non trouvé 2401939@ari-31-305-11:/users/nfs/Etu9/2401939/master/ACI/Work$
Quelqu'un aurait-il une idée :
Je l'ai testé sur ce fichier la.
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 #include <stdio.h> #include <stdlib.h> #include <regex.h> void search_in_file(FILE *f, char *pattern){ int cpt; regex_t *m; char line[1024]; cpt=0; regcomp(m,pattern,REG_EXTENDED); while((fgets(line,1024 ,f)) != NULL){ if(regexec(m,line,0,NULL,0) == 0){ fprintf(stdout,"%s trouvé à la ligne %d\n",pattern,cpt); return; } cpt++; } fprintf(stdout,"Motif non trouvé\n"); } int main(int argc, char* argv[]){ char *pattern; char *path; FILE *file; if(argc != 3){ fprintf(stderr,"Usage : regexEx <pattern> <fichier>\n"); return -1; } pattern = argv[1]; path = argv[2]; if((file = fopen(path,"r")) == NULL){ fprintf(stderr,"Error while opening the file %s\n",path); return -1; } fprintf(stdout,"pattern = %s\n",pattern); search_in_file(file,pattern); fclose(file); return 0; }
Quelqu'un aurait-il une idée?
![]()
Partager