[MontelLUG] Acrobazie puntatori in C
Samuele
samuele.zanin a tiscali.it
Gio 7 Lug 2016 17:05:43 CEST
Per risparmiare un po' di ram su un programma che gira su un micro, ho
deciso di fare una acrobazia.
Leggo i dati da un socket, poi devo sparare la stessa cosa su un altro,
con l'aggiunta ad inizio pacchetto di data e ora.
Quindi pensavo di usare un'unica variabile, con un po' di spazio
all'inizio per aggiungere in un secondo momento la data ora.
Quindi dichiaro:
char BufferLog[276];
char *BufferDati;
//Dico che BufferDati, punta 20 byte dopo l'inizio di BufferLog (almeno
credo).
BufferDati = &BufferLog[20];
ByteRicevuti = SocketDati.receiveFrom(Client, BufferDati, ByteDaRicevere);
printf("Buffer: %30.30s\n", BufferDati);
ScritturaLogRete(BufferLog, ByteRicevuti + 20);
void ScritturaLogRete(char *Dati, int ByteDaTrasmettere)
{
time_t Secondi = time(NULL);
strftime(Dati, 20, "%Y%m%d%H%M%S000;A;", localtime(&Secondi));
printf("BufferLog: %30.30s\n", Dati);
SocketLog.sendTo(Client, Dati, ByteDaTrasmettere);
}
In esecuzione ottengo:
Buffer: 1;T
BufferLog: 20160404131824000;A;1;T
Buffer ha 20 spazi all'inizio. Perché?!?!
La data ora sbagliata è dovuto all'orologio del micro non regolato.
Maggiori informazioni sulla lista
montellug