PDA

View Full Version : Ripulire buffer


MaxGuevara
05-09-2005, 16:31
Ciao,
Come posso fare per pulire un buffer?
mi spiego meglio:
recv(sd,buffer,LEN,0);
puts(buffer);

come si fa per "resettare" il contenuto dei dati salvati nella variabile buffer?

VegetaSSJ5
05-09-2005, 17:27
com'è stato dichiarato quel buffer?

cionci
05-09-2005, 17:46
Ciao,
Come posso fare per pulire un buffer?
mi spiego meglio:
recv(sd,buffer,LEN,0);
puts(buffer);

come si fa per "resettare" il contenuto dei dati salvati nella variabile buffer?
Che bisogno c'è ? Se è un buffer servirà per scriverci sopra...soprattutto tramite un recv...

MaxGuevara
05-09-2005, 22:53
e' stato dichiarato
char buffer[LEN];

MaxGuevara
05-09-2005, 22:54
C'e' bisogno,percche' mi serve ripulirlo per poi poterlo riutilizzare in lettura senza che sia contaminato da scritte precedenti.

VegetaSSJ5
06-09-2005, 02:01
C'e' bisogno,percche' mi serve ripulirlo per poi poterlo riutilizzare in lettura senza che sia contaminato da scritte precedenti.
MaxGuevara se cionci ti dice così evidentemente c'è un motivo ;) quello che lui vuole intendere è che comunque il buffer è un'area di memoria che viene riscritta di continuo e che se ci sono errori come quelli del tuo tipo non sono dovuti al fatto che il buffer "mantiene" dati vecchi, ma evidentemente che il buffer non viene proprio riscritto. comunque sia se vuoi cancellare il buffer per fare una cosa abbastanza spartana ma molto sicura riallocagli la memoria così:

char buffer[LEN];
.
.
.
free(buffer);
buffer= (char *) calloc (LEN, sizeof(char));

cionci
06-09-2005, 08:00
C'e' bisogno,percche' mi serve ripulirlo per poi poterlo riutilizzare in lettura senza che sia contaminato da scritte precedenti.
Ma se la recv ti dice la lunghezza utilizzata dal buffer che bisogno hai di ripulirlo ?

cdimauro
06-09-2005, 08:26
comunque sia se vuoi cancellare il buffer per fare una cosa abbastanza spartana ma molto sicura riallocagli la memoria così:

char buffer[LEN];
.
.
.
free(buffer);
buffer= (char *) calloc (LEN, sizeof(char));
Non è il caso, visto che buffer è un vettore "allocato" staticamente in fase di caricamento dell'eseguibile, e che non puoi certo liberare con free.

Meglio un

bzero(buffer, LEN);

se è necessario soltanto azzerare quel buffer.

Fenomeno85
06-09-2005, 09:10
Ma se la recv ti dice la lunghezza utilizzata dal buffer che bisogno hai di ripulirlo ?

infatti :mbe: poi ci pensa la revc

~§~ Sempre E Solo Lei ~§~