[C++]Mon programme compile mais plante.

Mon programme compile mais plante. [C++] - C++ - Programmation

Marsh Posté le 13-03-2005 à 13:59:00    

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:

Reply

Marsh Posté le 13-03-2005 à 13:59:00   

Reply

Marsh Posté le 13-03-2005 à 14:02:10    

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
Reply

Marsh Posté le 13-03-2005 à 14:29:45    

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

Reply

Marsh Posté le 13-03-2005 à 17:12:08    

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

Reply

Marsh Posté le 13-03-2005 à 17:35:34    

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. ;)

Reply

Marsh Posté le 13-03-2005 à 17:38:11    

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
Reply

Marsh Posté le 13-03-2005 à 18:52:04    

std::string::c_str()

Reply

Marsh Posté le 13-03-2005 à 19:14:16    

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 :-)

Reply

Marsh Posté le 13-03-2005 à 19:43:10    

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


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 13-03-2005 à 20:15:21    

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 ?

Reply

Marsh Posté le 13-03-2005 à 20:15:21   

Reply

Marsh Posté le 13-03-2005 à 20:22:27    

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

Reply

Marsh Posté le 13-03-2005 à 23:04:27    

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

Reply

Marsh Posté le 14-03-2005 à 13:22:03    

fucky_fuck a écrit :

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


 
mais oui bien sur ...


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 14-03-2005 à 13:38:14    

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...

Reply

Marsh Posté le 15-03-2005 à 18:16:51    

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 ...

Reply

Sujets relatifs:

Leave a Replay

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