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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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

  2. #2
    Expert confirmé
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    free(c);free(tab1);fclose(sortie);
    Où est le c= malloc(....) ?

  3. #3
    Membre éclairé 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
    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.

+ 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