Bonsoir,
j'ai un soucis avec regcomp, mon programme se compile très bien avec gcc, mais lors de l'exécution, au niveau de regcomp, ça plante ...

erreurs de pointeurs, et je ne comprends pas vraiment comment je dois régler mon problème ...

programme:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <regex.h>
 
#define ENTREE "dentree.txt"
#define SORTIE "dsortie.txt"
 
extern int errno;
 
void fin()
{
    time_t *heure;
    heure=malloc(sizeof(int));
    time(heure);
    if (errno) fprintf(stderr, "\a\a\a::: erreur:%d ::: fin du programme RLE le %s", errno, ctime(heure));
}
 
int main()
{
    int k,j=0,m=0;
    long i=0;
    char *c,*tab1,*tab2;
	int retour;
	regex_t preg; // expression régulière
    FILE *fichier, *sortie;
 
    //on gère les erreurs d'abbord
    if (atexit((void*)fin)==-1) exit(3);
    fichier=fopen(ENTREE,"rb");
    if (fichier==NULL) exit (1);
    sortie = fopen(SORTIE,"wb");
    if (sortie==NULL) exit(2);
    //fin erreurs possibles
 
    while (fgetc(fichier)!=EOF)i++; //taille de la chaine de caractère à convertir
 
    fseek(fichier,0,SEEK_SET); // on remet le curseur en début de fichier
 
    tab1 = calloc (i ,sizeof(char)); //alloue mémoire pour enregistrer la chaine de caractère dans la variable
    for (j=0;j<i;tab1[j]=fgetc(fichier),j++);
 
	fclose (fichier);
 
	regcomp(&preg,(const char*)"[0*9]+",REG_EXTENDED| REG_NOSUB);
	retour=regexec(&preg,"3456",0,0,0);
 
	regfree (&preg);
 
   	printf("%d", retour);
 
    free(c);free(tab1);fclose(sortie);
 
    exit (0);
}
erreur execution:
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
*** glibc detected *** ./decode: munmap_chunk(): invalid pointer: 0x080489b9 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6c501)[0x876501]
/lib/libc.so.6(+0x6d77e)[0x87777e]
./decode[0x8048966]
/lib/libc.so.6(__libc_start_main+0xe7)[0x820ce7]
./decode[0x80486d1]
======= Memory map: ========
0020f000-0022b000 r-xp 00000000 08:04 130324     /lib/ld-2.12.1.so
0022b000-0022c000 r--p 0001b000 08:04 130324     /lib/ld-2.12.1.so
0022c000-0022d000 rw-p 0001c000 08:04 130324     /lib/ld-2.12.1.so
00270000-00271000 r-xp 00000000 00:00 0          [vdso]
......................
.....................
....................
merci d'avance pour votre aide