Conversion(bis)

moloko2000 Messages postés 16 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2003 - 14 août 2003 à 15:44
cs_darkstorm Messages postés 44 Date d'inscription dimanche 3 février 2002 Statut Membre Dernière intervention 22 mai 2006 - 20 janv. 2004 à 21:36
je reformule ma question différement y a t'il un moyen de forcer la conversion entre un char[20](par exemple) et un char *.

16 réponses

HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
14 août 2003 à 15:52
Place le contexte parceque la je dois dire??????
a+
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
14 août 2003 à 15:53
Salut,
(char*) tableaudechar[20];
ca s'appelle un cast, et je pense pas que ca resolve tes problemes de compilation.
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
15 août 2003 à 15:56
Ou tt simplement :
char Char1[20];
char *Char2;

sprinf(Char2, "%s", Char1);

Et voila, Char2 est égale a Char1
_________________________
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
15 août 2003 à 15:57
euh... c sprintf, pas sprinf, dsl
_________________________
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
0

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

Posez votre question
cs_fll Messages postés 15 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 septembre 2004
15 août 2003 à 23:59
Vi, vi !
Et si tu n'as pas de crash immédiatement, tu l'auras sous peu !!!

char *Char2 = malloc( taillesuffisantepour contenis Char1 );

Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
mais la rivière est assèchée, ce soir !
0
cs_fll Messages postés 15 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 septembre 2004
15 août 2003 à 23:59
Vi, vi !
Et si tu n'as pas de crash immédiatement, tu l'auras sous peu !!!

char *Char2 = malloc( taillesuffisantepourcontenirChar1 );

Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
mais la rivière est assèchée, ce soir !
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
16 août 2003 à 01:03
Un crash ? tien tien, pourrait tu au moins me dire pourquoi ? J'ai testé ca plein de foi et ca marche sans aucun problème ! Il m'arrive de dire des conneries, mais la, je te suis vraiment pas !
_________________________
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit (et elle est pas si asséché que ca)
0
cs_fll Messages postés 15 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 septembre 2004
16 août 2003 à 01:15
Aloars tu as de la chance, ou tu programme juste pour t'ammmmmuser !

Un sprintf qui envoie des données on ne sait où !! sympa !!

Grosse connerie, même !
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
16 août 2003 à 01:21
Effectivement, je programme pour m'amuser, j'ai 17 ans jsuis pas payer pour le faire !

"Un sprintf qui envoie des données on ne sait où" : pourrait-tu etre plus clair ? dans ce cas, sprintf envoi les donné de Char1 dans Char2, je ne vois pas ou est le probleme
_________________________
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
0
cs_fll Messages postés 15 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 septembre 2004
16 août 2003 à 01:27
Bien sur. Si tu n'alloues pas de mémoire pour Char2, il pointe n'importe où, d'ou crash quasi assuré !

sprintf n'effectue pas d'allocation mémoire, in ne fait qu'analyser la chaine que tu passe en 2ème paramètre afin de garnir le premier paramètre (Char2).

Suis-je enfin clair ?
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
16 août 2003 à 01:33
Ce que tu dit est clair et je serais même tenté de te croire... Seulement, si ce que tu dit est vrai, alors pourquoi pas de " crash quasi assuré" a l'éxécution ? Je viens de revérifié ce ke je dit histoir d'être sur, et il s'avère que même sans allocation mémoire, il n'y a ni plantage, ni corruption de la chaine (qui est bien égale a la premiere)
_________________________
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
0
cs_fll Messages postés 15 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 septembre 2004
16 août 2003 à 01:37
Envoies zi 10000 octets dans ta chaine !
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
16 août 2003 à 01:49
ah ! je m'avou vaincu, tu as gagné (^_^)
Tu as raison, plantage lorsque la chaine est trop grande !!
Je suis désolé d'avoir dit une conneri (ca ne fait qu'environ un an que je programme, ya encore pas mal de truc qui m'échape)

En mettant

char *Char2 = new char[TailleSuffisante];

ca marche mais c'est un peu moins pratique

Merci quand meme de me l'avoir montré, ca m'évitera de refaire la meme erreur
_________________________
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
0
cs_fll Messages postés 15 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 septembre 2004
16 août 2003 à 10:39
7 pas ben grave, tu sais. Les pointeurs, c'est vachement puissant, mais aussi tellement traitre !

PS: j'ai commencé à programmé, tu n'atais pas né.
0
cs_fll Messages postés 15 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 20 septembre 2004
16 août 2003 à 10:53
Tu as une autre soluce plus rapide pour copier ta chaine :

char* Char2 = strdup( Char1 );

Tu as l'allocation mémoire et la copie, en même temps.

PS :
n'oublie pas de désallouer la mémoire lorsque tu n'en as plus besoin.

malloc, strdup ==>
free( Char2 );


new char[...] ==>
delete[] Char2;


(pourquoi delete[], parce que, na ! ;-)
non, sinon, si tu utilises delete Char2, tu ne délète que le premier objet char* (voui, je sais, pour un char*, ça ne fait pas de différence, mais pour une pointeur sur une classe, tu appelle tous les destructeurs, et pas seulement celui du premier élément de ta liste).
0
cs_darkstorm Messages postés 44 Date d'inscription dimanche 3 février 2002 Statut Membre Dernière intervention 22 mai 2006
20 janv. 2004 à 21:36
Ahhh un joli petit buffer overflow :-)

VIVE JAVA et le garbage collector...
0
Rejoignez-nous