[laboC]const char *

Voir le sujet précédent Voir le sujet suivant Aller en bas

[laboC]const char *

Message  bigmax le Mar 29 Nov 2011, 23:59

Bonsoir, j'ai un souci pour comprendre ceci :
Par exemple si une zone mémoire possède un const char * qui contient l'adresse d'une chaine
comment puis je récupérer le contenu de cette chaine ?


Code:
 
char * chaine;
chaine = *(const char **)zone;

ou bien
Code:

int adresse;
char * chaine;
adresse = *(int *)zone;
chaine = &adresse;
ou bien ni l'un ni l'autre..

et est ce que si une zone mémoire possède un const char * qui pointe vers une chaine de caractères = une zone mémoire possède un const char * qui contient l'adresse d'une chaine ?

Merci d'avance.

bigmax

Nombre de messages : 132
Age : 27
Prénom : Gilles
Statut : 3ème Réseaux
Date d'inscription : 17/11/2007

Revenir en haut Aller en bas

Re: [laboC]const char *

Message  karemkadidola le Mer 30 Nov 2011, 07:00

Tu dois dans ce cas avoir un pointeur de pointeur de const char c à d "const char **ptrptrconstchar" et le contenu de ce pointeur
" *ptrptrconstchar " egale à "const char *" si tu fais (*ptrptrconstchar)++ là tu te positionne au deuxième caractère de ta chaine de caractère (à l'indice 1)

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

Re: [laboC]const char *

Message  smb le Mer 30 Nov 2011, 08:43

bigmax a écrit:Bonsoir, j'ai un souci pour comprendre ceci :
Par exemple si une zone mémoire possède un const char * qui contient l'adresse d'une chaine
comment puis je récupérer le contenu de cette chaine ?


Code:
 
char * chaine;
chaine = *(const char **)zone;

ou bien
Code:

int adresse;
char * chaine;
adresse = *(int *)zone;
chaine = &adresse;
ou bien ni l'un ni l'autre..

et est ce que si une zone mémoire possède un const char * qui pointe vers une chaine de caractères = une zone mémoire possède un const char * qui contient l'adresse d'une chaine ?

Merci d'avance.

La bonne méthode est :

Code:
const char * chaine ;
...
chaine = * ( const char * *)zone ;

D'une manière générale, si zone pointe vers quelque chose d'un certain TYPE, il faut écrire (de façon générique):
Code:
TYPE quelquechose;
...
quelquechose = *(TYPE *)zone;
où tu remplaces simplement TYPE par le type en question.

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [laboC]const char *

Message  bigmax le Mer 30 Nov 2011, 09:46

Ok merci à vous deux pour vos explications..

@karemkadidola : Personnellement je préfère utiliser le moins possible les pointeurs de pointeurs d'où ma demande de cast
@SMB : Je ferai attention à bien caster avec le bon type !


Code:
char * chaine;
chaine = *(const char **)zone;
J'ai posé la question car je n'arrivais pas à afficher le contenu de chaine, le problème venait d'un oubli de fflsuh(stdout) en fin de code..

Encore merci Surprised


bigmax

Nombre de messages : 132
Age : 27
Prénom : Gilles
Statut : 3ème Réseaux
Date d'inscription : 17/11/2007

Revenir en haut Aller en bas

Re: [laboC]const char *

Message  Contenu sponsorisé Aujourd'hui à 08:45


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum