Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2096 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++]Mon programme compile mais plante.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++]Mon programme compile mais plante.

n°1011184
T-O-N-Y
Posté le 13-03-2005 à 13:59:00  profilanswer
 

Voila j'ai situé un à peu pres le problème mais ne voir pas comment le résoudre. Mon programme est sensé ouvrir une connection avec un serveur http et demandé une page grace à la fonction send puis recv de SOCK 2. J'utilise une fonction nommé open_page de type :  

Code :
  1. void open_page(char *request);

 
Cette fonction marche très bien lorsque je l'appel par exemple comme ceci :  

Code :
  1. open_page("http://forum.hardware.fr/hardwarefr/Programmation/nouveau_sujet.htm" );


Mais le problème c'est que moi je veux gérer l'ouverture de plusieurs page différentes à la suite donc j'ai créer une petite fonction :  

Code :
  1. char *build_request(char *middle)
  2. {
  3. char *request="GET http://www.monsite.com/";
  4. char *end_part=" HTTP/1.0\n\n";
  5. strcat(request, middle);
  6. strcat(request, end_part);
  7. return request;
  8. }


 
Mais quand je fais open_page(build_request(index.htm)); par exemple est bien ca plante...Je ne comprends pas d'ou viens l'erreur. Est ce que qqun à une idée ou une solution ? Je vous remercie d'avance pour vos réponses. :hello:  :hello:  :hello:

mood
Publicité
Posté le 13-03-2005 à 13:59:00  profilanswer
 

n°1011186
chrisbk
-
Posté le 13-03-2005 à 14:02:10  profilanswer
 

bon dieu, t'es en C++, utilise pas ces damnées char *, c'est qui font planter ton prog [:sisicaivrai]
 
 

Code :
  1. #include <sstream>
  2. ...
  3. std::string build_request(const std::string &middle) {
  4.   std::ostringstream str;
  5.   str <<"GET http://www.monsite.com/&#034;&lt;& [...] &lt;&#034; HTTP/1.0\n\n";
  6.   return str.str();
  7. }


Message édité par chrisbk le 13-03-2005 à 14:02:45
n°1011198
T-O-N-Y
Posté le 13-03-2005 à 14:29:45  profilanswer
 

Et comme définition de ma fonction dans le header de mon programme je mets quoi ? string build_request(string); ??

n°1011287
T-O-N-Y
Posté le 13-03-2005 à 17:12:08  profilanswer
 

Je ne vois pas comment je peux déclarer une telle fonction, quelqu'un pourrait il m'aider ?

n°1011319
Daxorp
Posté le 13-03-2005 à 17:35:34  profilanswer
 

chrisbk a écrit :

Code :
  1. std::string build_request(const std::string &middle) {



 
 
Bon il est pas revenu à la ligne avant le { mais c'est sa déclaration. ;)

n°1011327
T-O-N-Y
Posté le 13-03-2005 à 17:38:11  profilanswer
 

Bon ca marche mais maintenant ce qui resort de cette fonction ne rentre plus dans mon open_page ^^...De plus quand je veux sortir ma chaine crée par build_request à l'écran g le droit à tout sauf une chaine compréhensible avec que des caractères bizares.
 
Comment je peux convertir ca en char* ??Je pense qu'il n'y pas d'autre moyen que de convertir étant donné que j'utilise des soket et que les fonction sont deja définie avec du char* ....C'est embettant


Message édité par T-O-N-Y le 13-03-2005 à 17:40:28
n°1011418
chrisbk
-
Posté le 13-03-2005 à 18:52:04  profilanswer
 

std::string::c_str()

n°1011441
T-O-N-Y
Posté le 13-03-2005 à 19:14:16  profilanswer
 

Comme ca : open_page(std::string::c_str(build_request("index.php" ))); ?? Ca marche pas moi, euh c'est peut etre pas la bonne facon de l'utiliser ^^
 
J'obtiens : Use . or -> to call 'std::string::c_str() const' in function main(int,cahr *)...Je suis dsl d'etre aussi chiant :-)

n°1011462
blackgodde​ss
vive le troll !
Posté le 13-03-2005 à 19:43:10  profilanswer
 

std::string request(build_request("index.php" ));
open_page(request.c_str());


---------------
-( BlackGoddess )-
n°1011476
fucky_fuck
Posté le 13-03-2005 à 20:15:21  profilanswer
 

T-O-N-Y a écrit :

Comme ca : open_page(std::string::c_str(build_request("index.php" ))); ?? Ca marche pas moi, euh c'est peut etre pas la bonne facon de l'utiliser ^^
 
J'obtiens : Use . or -> to call 'std::string::c_str() const' in function main(int,cahr *)...Je suis dsl d'etre aussi chiant :-)


 
ce serait plutot open_page(build_request("index.php" )->c_str());
 
mais la fonction open, c pas une fonction a toi ?  
pourquoi tu lui fais pas prendre des string aussi ?

mood
Publicité
Posté le 13-03-2005 à 20:15:21  profilanswer
 

n°1011480
T-O-N-Y
Posté le 13-03-2005 à 20:22:27  profilanswer
 

Cannot convert 'const char *' to 'char *' in function main(int,char * *)
Type mismatch in parameter 'request' (wanted 'char *', got 'const char *') in
 function main(int,char * *)
*** 2 errors in Compile ***
 
Ralala...je comprends plus

n°1011618
Vinx
Posté le 13-03-2005 à 23:04:27  profilanswer
 

T-O-N-Y a écrit :


Code :
  1. char *build_request(char *middle)
  2. {
  3. char *request="GET http://www.monsite.com/";
  4. char *end_part=" HTTP/1.0\n\n";
  5. strcat(request, middle);
  6. strcat(request, end_part);
  7. return request;
  8. }


 
Mais quand je fais open_page(build_request(index.htm)); par exemple est bien ca plante...Je ne comprends pas d'ou viens l'erreur. Est ce que qqun à une idée ou une solution ? Je vous remercie d'avance pour vos réponses. :hello:  :hello:  :hello:


 
 
Il faut allouer de la mémoire avant d'appeler strcat.
Même pb qu'un topic précédent :
http://forum.hardware.fr/forum2.ph [...] 1#t1006581

n°1011985
blackgodde​ss
vive le troll !
Posté le 14-03-2005 à 13:22:03  profilanswer
 

fucky_fuck a écrit :

ce serait plutot open_page(build_request("index.php" )->c_str());


 
mais oui bien sur ...


---------------
-( BlackGoddess )-
n°1011999
T-O-N-Y
Posté le 14-03-2005 à 13:38:14  profilanswer
 

Moi je veux bien lui faire prendre des string mais je pense que le problème sera le meme puisqu'il faudra formater la chaine avant de la passer à send()...moi je vois ca comme ca...

n°1013734
fucky_fuck
Posté le 15-03-2005 à 18:16:51  profilanswer
 

blackgoddess a écrit :

mais oui bien sur ...


 
autant pour moi j'avais cru que buildrequest renvoyait une string
et en plus j'avais pas vu ton post ...
 
devais avoir bu ce soir la ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++]Mon programme compile mais plante.

 

Sujets relatifs
Programme C++ utilisant une base de donnéemon programme fonctionne t il chez vous?
ERREUR lancement programme depuis IDLEprogramme de ti 82 pour TS
Lancer un programme depuis une page web[ pti objet ] idée de programme en objet pour le bts
Arreter un programme[Python] Petit programme de raycasting ( - de 3ko)
Vidage de dossiers local & setting via programmeProgramme Access
Plus de sujets relatifs à : [C++]Mon programme compile mais plante.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR