Originariamente inviato da ESSE-EFFE
Non mi sembra di aver scritto il contrario...
Ma lo dici di nuovo:
codice:
Quindi, inviando come stringa, un separatore (ad esempio il terminatore nullo) va aggiunto per ogni dato inviato
Se la sprintf lo aggiunge di suo, perchè dici che va aggiunto?
Di solito, invece, si tengono i dati da inviare in una struttura e si invia quella esattamente come è in memoria. E anche la lettura diventa più semplice. Prova.
E allora perchè non tenere tutto in un array allocato dinamicamente?
Se stai dicendo di inviare sizeof(double) byte, non è di certo la soluzione migliore perchè sizeof(double) non è uguale per tutte le macchine.
codice:
send(s,stringa,(int)strlen(stringa)+1,0);
E chi riceve la stringa riceve una dimensione fissa di caratteri (ad esempio 100), e usa la atof per convertire la stringa.
Secondo il tuo metodo si potrebbe fare così:
codice:
double val;
send(s,(char*)&val,sizeof(double),0);
Che è comunque interessante ma c'è il problema di sizeof(double) che anche se in genere è 8 byte, potrebbe non essere così.Lo steso vale per gli interi (sul mio computer li ho di 4 byte).