Expressions Régulières en C
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 :
Code:
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$ |
Je poste mon code.
Quelqu'un aurait-il une idé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 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;
} |
Je l'ai testé sur ce fichier la.
Quelqu'un aurait-il une idée?
;)