moloko2000
Messages postés16Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention26 août 2003
-
14 août 2003 à 15:44
cs_darkstorm
Messages postés44Date d'inscriptiondimanche 3 février 2002StatutMembreDernière intervention22 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 *.
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 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)
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 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
cs_fll
Messages postés15Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention20 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).
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 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
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 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
cs_fll
Messages postés15Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention20 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).