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

  FORUM HardWare.fr
  Programmation
  C

  string en C, concatenation etrange

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

string en C, concatenation etrange

n°1006581
xiluoc
un pc pour les unirs ....
Posté le 09-03-2005 à 11:36:06  profilanswer
 

:hello: ,

Code :
  1. void gettext(FILE *f, FILE *r, char *string)
  2. {
  3.         int length;
  4.         char c;
  5.         char *command="GETTEXT ";
  6.         strcat (command,string);
  7.        
  8.         //1er printf
  9.         printf("%s\n",command);
  10.        
  11.         length = strlen(command);
  12.         command[length] = 0xff;
  13.        
  14.         //2nd printf
  15.         printf("%s\n",tmp);
  16.         fprintf(f,"%s",command);
  17.  
  18.         fflush(f);
  19.         while ((c = fgetc(r)) != EOF) { putchar(c); }
  20.         printf("\n" );
  21. }


 

Code :
  1. gettext(send,receive,"score70" );


 
 

Code :
  1. GETTEXT score70
  2. GETTEXT score70ÿe70


 
 
Pourquoi le fait de faire ca au milieu
length = strlen(command);
command[length] = 0xff;
 
me rajoute quelquechose apres 0xff (le ÿ)
ÿ definit la fin de notre message lors de lenvoie au serveur via socket.
d ou viens e70 ? j en veus pas.  
 
 

mood
Publicité
Posté le 09-03-2005 à 11:36:06  profilanswer
 

n°1006641
xiluoc
un pc pour les unirs ....
Posté le 09-03-2005 à 12:19:35  profilanswer
 

up

n°1006642
FlorentG
Posté le 09-03-2005 à 12:20:46  profilanswer
 

T'as pas mis '\0' ;)

n°1006662
xiluoc
un pc pour les unirs ....
Posté le 09-03-2005 à 12:40:24  profilanswer
 

Code :
  1. gettext(send,receive,"score70\0" );

ne change rien :/ le /0 donne la fin d une string, cest bien la que je dois linserer :/

n°1006665
FlorentG
Posté le 09-03-2005 à 12:42:52  profilanswer
 

Ouais mais nan. Tu rajoute quand même ton 0xFF. Il faut 0xFF et \0 ;)

n°1006729
Vinx
Posté le 09-03-2005 à 13:32:12  profilanswer
 

Ton strcat n'est pas bon.
Tu n'as pas alloué de mémoire pour pouvoir ajouté ton "string" après "command".
Remplace plutôt "command" par quelque chose du genre : char command[255]
 
Edit : En principe faudrait vérifier la taille de string avant ton strcat pour être sûr de ne pas dépasser. (Overflow) A moins que tu sois sûr que string ne dépassera jamais xx caractères ;)


Message édité par Vinx le 09-03-2005 à 13:34:14

---------------
Slack powa | http://www.racingpneu.com
n°1006766
Emmanuel D​elahaye
C is a sharp tool
Posté le 09-03-2005 à 13:55:19  profilanswer
 

xiluoc a écrit :


Code :
  1. void gettext(FILE *f, FILE *r, char *string)
  2. {
  3.         char *command="GETTEXT ";
  4.         strcat (command,string);
  5. }




Ceci est interdit, car  

  • une chaine litéralle n'est pas forcément modifiable
  • elle a une taille fixe et définie, on ne peut donc rien y ajouter..


void gettext(FILE *f, FILE *r, char *string)
{
   char command[128] = "GETTEXT ";
   strcat (command, string);
}


Fonctionne à condition que la taille de 'command' soit suffisante (strncat() est plus sûr...)
 
Dans l'industrie ou utilise plutôt l'allocation dynamique, voir un objet automatique comme FSTR (Flexible STRing) de ma bibliothèque :
 
http://mapage.noos.fr/emdel/clib.htm


Message édité par Emmanuel Delahaye le 09-03-2005 à 13:56:13

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

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

  string en C, concatenation etrange

 

Sujets relatifs
conversion d'un float en String avec java[JAVA] Probleme de conversion de String en Date?
[C#] Transformer un Array de Byte en String proprement ?[Résolu] Concaténation spécifique
Metaprg + Stringrecuperation string d'un JTextField
message d'erreur bien etrangePortage d'une vieille appli delphi + invalid typecast de string(PChar)
mysql_real_escape_string non reconnue ?Conversion String utf8
Plus de sujets relatifs à : string en C, concatenation etrange


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