Problème de débutant avec strcat

Problème de débutant avec strcat - C - Programmation

Marsh Posté le 22-12-2005 à 15:11:10    

Bonjour à tous...
Pas très doué en C, je cherche à renvoyer une en-tête compatible HTTP dont une des ligne contient la longueur du segment que je dois renvoyer.
Voici un bout de mon code  

Code :
  1. char buffer[TAILLE_BUFFER];
  2. char a_envoyer[TAILLE_BUFFER];
  3. strcat(a_envoyer,"Coucou !" );
  4. strcat(buffer,"HTTP/1.1 200 OK\nAccept-Ranges: bytes\nContent-Length: " );
  5. int taille=sizeof(a_envoyer);
  6. strcat(buffer,(char)sizeof(a_envoyer));
  7. strcat(buffer,"\nContent-Type: text/html" );
  8. strcat(buffer,a_envoyer);


 
La ligne 7 semble poser problème puisque j'ai un warning :

Code :
  1. passing argument 2 of 'strcat' makes pointer from integer without a cast


Où est l'erreur du débutant...?

Message cité 1 fois
Message édité par toutoune le 22-12-2005 à 15:11:49
Reply

Marsh Posté le 22-12-2005 à 15:11:10   

Reply

Marsh Posté le 22-12-2005 à 15:13:55    

toutoune a écrit :

Où est l'erreur du débutant...?


 
Prototype de strcat() :

char *strcat(char *s1, const char *s2);


 
Tu as marqué :

strcat(buffer,(char)sizeof(a_envoyer));


 
[:klem3i1]

Reply

Marsh Posté le 22-12-2005 à 15:16:30    

Quelle est alors la solution pour concaténer du contenu variable telle qu'une taille de chaine?

Reply

Marsh Posté le 22-12-2005 à 15:22:00    

Une solution possible, remplacer le strcat() fautif par sprintf() :
 

sprintf(buffer,"%s%d",buffer, TAILLE_BUFFER);


 
Ou, puisqu'on va par là, étendre la logique en adoptant carrément sprintf() à la place de strcat() :
 

Code :
  1. sprintf(buffer, "HTTP/1.1 200 OK\nAccept-Ranges: bytes\nContent-Length: %d\nContent-Type: text/html%s", TAILLE_BUFFER, a_envoyer);


 
(sur une seule ligne c'est long et difficile à lire, il y a plusieurs solutions pour présenter ce code pour le rendre plus compréhensible)


Message édité par Elmoricq le 22-12-2005 à 15:22:40
Reply

Marsh Posté le 22-12-2005 à 15:26:58    

Super, merci beaucoup pour ces réponses rapides et efficaces!

Reply

Sujets relatifs:

Leave a Replay

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