bonjour,
j'ai un petit problème d'expression réguliere. Je voudrais afficher le résultat de la recherche.

La recherche trouve bien un résultat mais je n'arrive pas à exploiter la structure regmatch_t pour afficher le résultat.

Voici le source

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
 
#include <stdio.h>
#include <regex.h>
 
#define BUFFER_SIZE 512
 
void cherche (char* pattern, FILE *f){
	int codeRetour;
	regex_t re;
	char buffer[BUFFER_SIZE];
	regmatch_t resultat[10];  // On stocke 10 occurences
 
	// Compilation de l'expression . Pour les tests on cherche COUCOU
	if ((codeRetour=regcomp( &re, "COUCOU", REG_EXTENDED))!=0){
		// Erreur de compile
		regerror(codeRetour, &re, buffer, sizeof buffer);
		fprintf(stderr, "Err compilation expression: %s (%s)\n", buffer, pattern);
		return;
	}
 
 
	while (fgets(buffer, BUFFER_SIZE, f) != NULL){
		// On cherche 
		if (regexec(&re, buffer, 10, resultat,0)==0){
			// On affiche la ligne 
		//	fputs(buffer, stdout);
			fprintf(stdout ,"Résultat --> %s\n",resultat[1] );
		} else {
			fprintf(stderr ,"Pas de résultat\n");
		}
	}
	//libere la memoire
	regfree(&re);
}
 
int main (int argc, char **argv){
//	argc++;
//	argv++;	
	cherche(*argv, stdin);
}
Et voici un exemple d'utilisation

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
htristra@1[src]$ ../exec/essai
toto
Pas de résultat
COUCOU
Résultat --> (null)
Est ce que quelqu'un a une idée ?
Je trouve pas beaucoup d'exemple sur le net, si quelqu'un a une bonne adresse....

Merci de votre aide