Problème pointeur regcomp
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:
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:
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