Convertir un const char * en char *

cs_Mike
Messages postés
70
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
24 juillet 2004
- 30 août 2003 à 17:59
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
- 30 août 2003 à 20:47
SAlut,

j'aimerais convertir un 'const char *' en 'char *', bizarement aucune libraire ne le fé, ou alors j'ai pas trouvé lol. Donc si vous pouviez m'aider.
MErci d'avance.
A voir également:

12 réponses

cs_aardman
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
30 août 2003 à 18:26
char * et const char* ne sont que des pointeurs sur char, rien de plus.
Le const veut simplement dire que la fonction ne doit pas modifier la chaine de caractere.
Essaie un cast (char*) devant ton "const char*".
1
cs_aardman
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
30 août 2003 à 18:13
Salut,
const char* et char* c'est la meme chose.
0
cs_Mike
Messages postés
70
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
24 juillet 2004
1
30 août 2003 à 18:21
mdr, en tout cas pas pour ' strcat(char *, const char *) ', essai de passé un const char * en premier parametre de cette fonction ( trés connu ), tu vera bien ...

Il faut imperativement convertir le const char * en char *, pas le choix, sinon tu rentre pas dans la fonction.

Si vous avez des idée ???
0
cs_Mike
Messages postés
70
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
24 juillet 2004
1
30 août 2003 à 18:32
ué justement si tu c comment marche strcat tu devrai comprendre :

la fonction prend la chaine du second parametre ( const char * ) et l'ajoute à la chaine du premier parametre, qui doit donc, ce premier parametre, etre modifiable et non constant ( logique, car une chaine constante ne pe pas etre reecrite ) ... et donc pas de cast possible aussi ...

voila reflechi au truc ... fé des test si tu ve, tu vera ça marche pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aardman
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
30 août 2003 à 18:40
Je sais tres bien comment marche strcat().

Tu essayerai pas de faire strcat("un mot", "un autre mot"); par hazard ?
La c'est sur que ca fonctionnera jamais.
0
cs_Mike
Messages postés
70
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
24 juillet 2004
1
30 août 2003 à 18:46
On y vient lol, voila pourquoi j'ai besoin de convertir un 'const char *' en 'char *', j'ai une fonction qui me renvoie un const char * que je dois ensuite passé par cette fonction strcat, je suis donc obliger de la convertir en char *.

voila
0
cs_aardman
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
30 août 2003 à 18:53
Je pense que tu ne pourra pas concatener ce que te retourne ta fonction et autre chose avec strcat().
0
cs_Mike
Messages postés
70
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
24 juillet 2004
1
30 août 2003 à 18:55
Bah si lol, suffit de convertir ton retour en char *, je l'es fé avec une petite routine, mais je pense qu'y a de meilleur solus ...
0
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
30 août 2003 à 19:44
Un cast suffit amplement à enlever le paramètre constant sur un pointeur. Mais si tu es ammené à faire ca, c'est que ton programme est mal conçu.

De toute façon dans ton cas:

const char* str1=MaFunction();
strcat((char*)str1, str2);


Il n'y a pas assez de place pour stocker les deux chaines de caractères, dépassement de tableau. Donc la solution:

const char* str1=MaFunction();

char* str3=new char[strlen(str1) + strlen(str2) + 1];
strcpy(str3, str1);
strcat(str3, str2);

// ...

delete [] str3;



Kaid
0
cs_Mike
Messages postés
70
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
24 juillet 2004
1
30 août 2003 à 20:23
Ahh je savais bien qui y'avait une fonction pour ça, elle s'appelle strdup() et se trouve dans string.h. elle convertie un const char * en char * .

eh bah j'aurais galeré pour la trouvé.
MErci qd même a tous
Ciao
0
francisdanes
Messages postés
3
Date d'inscription
jeudi 14 août 2003
Statut
Membre
Dernière intervention
30 août 2003

30 août 2003 à 20:39
-------------------------------
Réponse au message :
-------------------------------

> Ahh je savais bien qui y'avait une fonction pour ça, elle s'appelle strdup() et se trouve dans string.h. elle convertie un const char * en char * .
>
> eh bah j'aurais galeré pour la trouvé.
> MErci qd même a tous
> Ciao
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Un cast suffit amplement à enlever le paramètre constant sur un pointeur. Mais si tu es ammené à faire ca, c'est que ton programme est mal conçu.
> >
> > De toute façon dans ton cas:
> >
> >
> > const char* str1=MaFunction();
> > strcat((char*)str1, str2);
> > 

> >
> > Il n'y a pas assez de place pour stocker les deux chaines de caractères, dépassement de tableau. Donc la solution:
> >
> >
> > const char* str1=MaFunction();
> > 
> > char* str3=new char[strlen(str1) + strlen(str2) + 1];
> > strcpy(str3, str1);
> > strcat(str3, str2);
> > 
> > // ...
> > 
> > delete [] str3;
> > 
> > 

> >
> > Kaid
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bah si lol, suffit de convertir ton retour en char *, je l'es fé avec une petite routine, mais je pense qu'y a de meilleur solus ...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Je pense que tu ne pourra pas concatener ce que te retourne ta fonction et autre chose avec strcat().
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > >
> > > > >
> > > > > On y vient lol, voila pourquoi j'ai besoin de convertir un 'const char *' en 'char *', j'ai une fonction qui me renvoie un const char * que je dois ensuite passé par cette fonction strcat, je suis donc obliger de la convertir en char *.
> > > > >
> > > > > voila
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Je sais tres bien comment marche strcat().
> > > > > >
> > > > > > Tu essayerai pas de faire strcat("un mot", "un autre mot"); par hazard ?
> > > > > > La c'est sur que ca fonctionnera jamais.
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > >
> > > > > > > ué justement si tu c comment marche strcat tu devrai comprendre :
> > > > > > >
> > > > > > > la fonction prend la chaine du second parametre ( const char * ) et l'ajoute à la chaine du premier parametre, qui doit donc, ce premier parametre, etre modifiable et non constant ( logique, car une chaine constante ne pe pas etre reecrite ) ... et donc pas de cast possible aussi ...
> > > > > > >
> > > > > > > voila reflechi au truc ... fé des test si tu ve, tu vera ça marche pas.
> > > > > > >
> > > > > > > -------------------------------
> > > > > > > Réponse au message :
> > > > > > > -------------------------------
> > > > > > >
> > > > > > > > char * et const char* ne sont que des pointeurs sur char, rien de plus.
> > > > > > > > Le const veut simplement dire que la fonction ne doit pas modifier la chaine de caractere.
> > > > > > > > Essaie un cast (char*) devant ton "const char*".
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > -------------------------------
> > > > > > > > Réponse au message :
> > > > > > > > -------------------------------
> > > > > > > >
> > > > > > > > >
> > > > > > > > > mdr, en tout cas pas pour ' strcat(char *, const char *) ', essai de passé un const char * en premier parametre de cette fonction ( trés connu ), tu vera bien ...
> > > > > > > > >
> > > > > > > > > Il faut imperativement convertir le const char * en char *, pas le choix, sinon tu rentre pas dans la fonction.
> > > > > > > > >
> > > > > > > > > Si vous avez des idée ???
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > -------------------------------
> > > > > > > > > Réponse au message :
> > > > > > > > > -------------------------------
> > > > > > > > >
> > > > > > > > > > Salut,
> > > > > > > > > > const char* et char* c'est la meme chose.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -------------------------------
> > > > > > > > > > Réponse au message :
> > > > > > > > > > -------------------------------
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > SAlut,
> > > > > > > > > > >
> > > > > > > > > > > j'aimerais convertir un 'const char *' en 'char *', bizarement aucune libraire ne le fé, ou alors j'ai pas trouvé lol. Donc si vous pouviez m'aider.
> > > > > > > > > > > MErci d'avance.
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
0
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
30 août 2003 à 20:47
strdup() ne sert pas à enlever un 'const' mais à dupliquer une chaine de caractères, d'où son nom. En fait elle fait l'allocation dynamique puis la copie via strcpy().

Kaid
0