|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2006
Messaggi: 131
|
[C] malloc + sprintf di un messaggio generano un linefeed inaspettato..
devo concatenare tra loro:
->un int che rappresenta un numero da 0 a 10 per indicare al server un determinao codice operativo ->una stringa che indica un nome ->un int che indica la lughezza del dato successivo su cui operare ->la stringa che rappresenta il dato per far questo : 1)faccio una malloc di due sizeof(char)*strlen delle stringhe da inviare + due sizeof(int) per il codice op. e la lunghezza della stringa-dato 2)poi con una sprintf concateno tutto insieme nell'ordine(codop.,nome,lunghezzadato,dato) DEL TIPO: char* invio; if((invio = (char *)malloc(sizeof(char)*(strlen(par1)+strlen(par2))+sizeof(int)*2))==NULL){ printf("malloc per invio comando fallita,terminazione client");exit(1);} sprintf(invio,"%d%s_%d%s",0,par1,strlen(par2),par2); PROBLEMA: se stampo su schermo tutto ok,a parte il fatto che viene inserito alla fine un LINE FEED che non dovrebe esserci e manda un po' a farsi benedire l'intera comunicazione lo vedo perche' stampando tutto con un punto e virgola finale,il punto e virgola finisce a capo sapete mica da dove possa essere generato e come potrei evitare? grazie! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1759
|
Vedi se anche così ti resta il ritorno a capo
Codice:
char* invio;
int len;
if((invio=(char*)malloc(sizeof(char)*(strlen(par1)+strlen(par2))+sizeof(int)*2)) == NULL) {
printf("errore");
exit(1);
}
sprintf(invio,"%d%s_%d%s",0,par1,strlen(par2),par2);
len = strlen(invio);
if(invio[len-1] == '\n')
invio[len-1] = 0;
//e poi usi "invio"
printf("%s",invio);
Ultima modifica di Alhazred : 06-09-2007 alle 17:54. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:39.



















