IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème pointeur regcomp


Sujet :

C

  1. #1
    Membre habitué Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Points : 196
    Points
    196
    Par défaut 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 : 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
    "Les spécialistes commencent par n'apprendre que ce qu'ils aiment et finissent par n'aimer que ce qu'ils ont appris." - Gilbert Cesbron
    "Si nous avons chacun un objet et que nous les echangeons, nous avons chacun un objet. Si nous avons chacun une idée et que nous les échangeons, nous avons chacun deux idées." - Proverbe Chinois.

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    free(c);free(tab1);fclose(sortie);
    Où est le c= malloc(....) ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre habitué Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Points : 196
    Points
    196
    Par défaut
    oh non, à force de retirer des choses pour tester des choses j'en oublie de retirer l'essentiel.

    bien merci, dommage que ça soit aussi b^te.
    "Les spécialistes commencent par n'apprendre que ce qu'ils aiment et finissent par n'aimer que ce qu'ils ont appris." - Gilbert Cesbron
    "Si nous avons chacun un objet et que nous les echangeons, nous avons chacun un objet. Si nous avons chacun une idée et que nous les échangeons, nous avons chacun deux idées." - Proverbe Chinois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème: pointeur de fonction à partir d'un namespace
    Par akileaQuébec dans le forum C++
    Réponses: 8
    Dernier message: 09/10/2007, 10h37
  2. Problème Pointeurs d'objets
    Par Julien_C++ dans le forum C++/CLI
    Réponses: 6
    Dernier message: 03/08/2007, 16h00
  3. Problème pointeur de fonction
    Par ired dans le forum C++Builder
    Réponses: 7
    Dernier message: 16/06/2007, 13h24
  4. problème pointeur sur structure
    Par lejohn dans le forum C
    Réponses: 9
    Dernier message: 01/05/2007, 13h17
  5. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo