erreur

erreur - C++ - Programmation

Marsh Posté le 15-03-2005 à 10:40:10    

Bonjour, cela fait bientot, une semaine que je me galère sur cette erreur, auour de moi, personne ne peut m'aider :fou: . Je pense que mon erreur se trouve dans le main.
ceci est mon main contenu dans le testeur:
Code:
 
   //Construction de la classe à tester
   u_char * packet;
   strcpy (packet,"af0ae5\0" );
    cout << "Construction de l'instance de classe (objet) TrameEthernet" << endl;
    TrameEthernet *trameethernet = new TrameEthernet(packet);
 
 
l'erreur se trouve a :
Code:
   strcpy (packet,"af0ae5\0" );
 
 
l'erreur etant:
 
invalid converion from `u_char*' to `char*'
 
merci de bien vouloir m'aider :hello:

Reply

Marsh Posté le 15-03-2005 à 10:40:10   

Reply

Marsh Posté le 15-03-2005 à 10:43:35    

L'erreur est pourtant claire...strcpy veut un char *, et tu lui donnes un u_char *, ça lui plait pas.[:skeye]
http://www.hmug.org/man/3/strcpy.html
 
D'autre part, je suis pas sûr que ne rien allouer à packet soit très judicieux...
 
[edit]
 
...et en C++ il y a un type std::string qui est bien pratique...


Message édité par skeye le 15-03-2005 à 10:46:36

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-03-2005 à 10:50:11    

Je sais bien que string est pratique mais dans la fonction qui est appeler, il n'est acepter que des u_char!!!!
c'est pour cela, que j'aimerais mettre ma trame ethernet dans se u_char!!!
j'ai essayer plusieur methode, mais cela ne marche pas!

Reply

Marsh Posté le 15-03-2005 à 11:42:44    

j'aurais mieux de pas lire ce topic moi

Reply

Marsh Posté le 17-03-2005 à 06:33:02    

Bon, pour faire simple, packet est un pointeur sur une zone non allouée !
Soit tu l'alloues dans la pile avec un classique
u_char packet[256]; (enfin la taille max que tu veux)
 
Soit tu t'alloues dynamiquement ton buffer de la taille que tu veux:
u_char* packet;
packet = (u_char*)malloc( 256 );
...
free( packet );
 
voila, c'est quand meme la base :)
Bon courage et bonne chance pour la suite


Message édité par willynt le 17-03-2005 à 06:33:31
Reply

Marsh Posté le 17-03-2005 à 11:25:20    

transistor49 a écrit :

Je sais bien que string est pratique mais dans la fonction qui est appeler, il n'est acepter que des u_char!!!!
c'est pour cela, que j'aimerais mettre ma trame ethernet dans se u_char!!!
j'ai essayer plusieur methode, mais cela ne marche pas!


 
et string::c_str() c'est pour les kangourous ouzbéques ? :o

Reply

Marsh Posté le 17-03-2005 à 14:54:24    

Joel F a écrit :

et string::c_str() c'est pour les kangourous ouzbéques ? :o

 :D  :D  :D  (faudra que je la retienne celle la !!!)

Reply

Marsh Posté le 17-03-2005 à 15:06:18    

willynt a écrit :

Bon, pour faire simple, packet est un pointeur sur une zone non allouée !
Soit tu l'alloues dans la pile avec un classique
u_char packet[256]; (enfin la taille max que tu veux)
 
Soit tu t'alloues dynamiquement ton buffer de la taille que tu veux:
u_char* packet;
packet = (u_char*)malloc( 256 );
...
free( packet );
 
voila, c'est quand meme la base :)
Bon courage et bonne chance pour la suite


 
Tiens toi aussi tu castes les malloc ?  :love:  :o  

Reply

Marsh Posté le 17-03-2005 à 15:24:33    

kowalski a écrit :

Tiens toi aussi tu castes les malloc ?  :love:  :o


 
c'est la mode 2005 :o

Reply

Marsh Posté le 17-03-2005 à 15:48:45    

Oui Messieurs, je caste les malloc...
Et ?

Reply

Marsh Posté le 17-03-2005 à 15:48:45   

Reply

Marsh Posté le 17-03-2005 à 18:21:47    

Bah caster les mallocs ... ca supprime des erreurs de warning (sans aller trifouiller dans les options de VS ... si c'est sur VS).
 
Et de toute facon, on est en C++ ... vous connaissez malloc en C++ vous ?   :p  

Reply

Marsh Posté le 17-03-2005 à 21:44:06    

Worldofdada a écrit :

Bah caster les mallocs ... ca supprime des erreurs de warning (sans aller trifouiller dans les options de VS ... si c'est sur VS).


 
 :sarcastic: oauis c'est quand même plus simple de faire n'impotequoi
que de lire la doc de Visual (que vous avez acheté bien sur :o)

Reply

Marsh Posté le 17-03-2005 à 21:51:03    

Worldofdada a écrit :

Bah caster les mallocs ... ca supprime des erreurs de warning (sans aller trifouiller dans les options de VS ... si c'est sur VS).
 
Et de toute facon, on est en C++ ... vous connaissez malloc en C++ vous ?   :p


 
Concept intéressant :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed