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 :

Probleme sur pointeurs, je suppose


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut Probleme sur pointeurs, je suppose
    Bonjour,
    Voila je rencontre des problemes a l'execution et aucun a la compilation.
    Voici l'erreur :
    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
     
    [RES]$ ./qp
    Appel de la fonction
    Taille de string : 25
    Allocation reussie
    Valeur de string+i : L
    Avant boucle while
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Boucle reussie
    Texte : Les accents : à é è ç
     Texte encoder:Les accents : == == == ==8048860
    *** glibc detected *** ./qp: munmap_chunk(): invalid pointer: 0x08048848 ***
    ======= Backtrace: =========
    /lib/libc.so.6(__libc_free+0x179)[0x1684f0]
    ./qp[0x8048700]
    /lib/libc.so.6(__libc_start_main+0xdc)[0x116724]
    ./qp[0x8048421]
    ======= Memory map: ========
    00101000-0022e000 r-xp 00000000 03:03 619613     /lib/libc-2.4.so
    0022e000-00230000 r-xp 0012d000 03:03 619613     /lib/libc-2.4.so
    00230000-00231000 rwxp 0012f000 03:03 619613     /lib/libc-2.4.so
    00231000-00234000 rwxp 00231000 00:00 0
    00ce3000-00ce4000 r-xp 00ce3000 00:00 0          [vdso]
    00ce4000-00cfd000 r-xp 00000000 03:03 619604     /lib/ld-2.4.so
    00cfd000-00cfe000 r-xp 00018000 03:03 619604     /lib/ld-2.4.so
    00cfe000-00cff000 rwxp 00019000 03:03 619604     /lib/ld-2.4.so
    00d9f000-00daa000 r-xp 00000000 03:03 619631     /lib/libgcc_s-4.1.1-20060525.so.1
    00daa000-00dab000 rwxp 0000a000 03:03 619631     /lib/libgcc_s-4.1.1-20060525.so.1
    08048000-08049000 r-xp 00000000 00:16 39486087   /auto_home/vnunge/TER_Reseau/RES/qp
    08049000-0804a000 rw-p 00000000 00:16 39486087   /auto_home/vnunge/TER_Reseau/RES/qp
    0918c000-091ad000 rw-p 0918c000 00:00 0          [heap]
    b7fa1000-b7fa2000 rw-p b7fa1000 00:00 0
    b7fbd000-b7fbf000 rw-p b7fbd000 00:00 0
    bfb2a000-bfb41000 rw-p bfb2a000 00:00 0          [stack]
    Abandon
    Voici le code :
    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
     
    #include <time.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
     
    char *enc_quotedP(char * string){
    	int i=0;
    	char *textqp;
    	textqp=malloc(strlen(string)+1);
     
    	fprintf(stdout,"Taille de string : %d\n",strlen(string));
     
    	if(textqp){
    		fprintf(stdout,"Allocation reussie \n");
    		fprintf(stdout,"Valeur de string+i : %c \n",*(string+i));
    		fprintf(stdout,"Avant boucle while \n");
    		while(*(string+i)!='\0'){
    			fprintf(stdout,"Boucle reussie \n");
    			if((*(string+i)<0) || (strcmp((string+i),"=")==0)) {
    				sprintf((textqp+i),"=%x",(string+i));
    			}
    			else {
    				*(textqp+i)=*(string+i);
    			}
    			i++;
    		}
    		return textqp;
    	}
    	fprintf(stderr,"Erreur de Malloc\n");
    	return NULL;	
    }
     
    int main (int argc, char* argv[]){
     
    	char *texte="Les accents : à é è ç";
     
    	fprintf(stdout,"Appel de la fonction \n");
     
    	char *textecoder=enc_quotedP(texte);
     
    	fprintf(stdout,"Texte : %s\n Texte encoder:%s\n",texte,textecoder);
    	free(texte);
    	free(textecoder);
    }
    Merci de votre aide,
    Ciao,

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Tu fais un free sur une zone non allouée dynamiquement.


    Quand on regarde, on voit que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *texte="Les accents : à é è ç";
    	free(texte);
    Tu as une allocation automatique au début, il n'y a pas à faire de free.


    Au passage, ta fonction retourne un int, alors fais en sorte qu'elle en retourne un (par exemple return EXIT_SUCCESS. Avec des bonnes options de compilation, tu aurais eu un warning.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut thx
    Salut,
    Je viens de corriger, merci.
    Par contre j'arrive pas au resultat escompté.
    Voila ce que j'obtiens :
    Texte : Les accents : à é è ç
    Texte encoder:Les accents : == == == ==80487b4

    Si vous avez une idée,
    Merci,
    Ciao,

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Les accent posent beaucoup de problème si on les affiche directement dans la console :

    Voir :

    http://www.developpez.net/forums/sho...ghlight=accent

    Ou cherche : accent dans le forum C, tu auras d'autres liens.

Discussions similaires

  1. Réponses: 12
    Dernier message: 19/04/2010, 08h40
  2. probleme sur des pointeurs de pointeurs
    Par frboyer dans le forum Langage
    Réponses: 2
    Dernier message: 14/04/2010, 18h01
  3. petit probleme de pointeur dans strcat sur le projet de mes etudiant
    Par hamhama-group dans le forum Bibliothèque standard
    Réponses: 8
    Dernier message: 04/12/2007, 18h34
  4. probleme de chauffe je suppose sur presario 700
    Par miloukansas dans le forum Composants
    Réponses: 2
    Dernier message: 05/06/2006, 14h31
  5. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26

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