Originariamente inviato da mamo139
in effetti neanche a me da problemi... cmq di oregon mi fido

piuttosto: nn ho mai visto size_t... cosa sarebbe???



[EDIT] ho controllato e ha ragione oregon: i file hanno due grandezze diverse... anche se cmq a me funzionano correttamente entrambi, almeno a prima vista
I file ti funzionano entrambi perche' le differenze (eventualmente) sono soltanto nell'ultima parte del file destinazione che viene in ogni caso "allungato". E questo non da' ovviamente fastidio ad un file eseguibile. Ma per un file di dati puo' rappresentare una situazione pericolosa.

E poi, basta pensare ad un file piu' piccolo di 512 byte, diciamo di 100 byte ...

Con i piccoli aggiustamenti che ti ho dato, tieni conto dell'ultima porzione del file che non e' detto sia di 512 byte.

size_t e' un tipo di dato predefinito dal SDK di Windows che viene usato per gestire le dimensioni di un file. Corrisponde ad un unsigned long a 32 bit ma, con un'altra architettura e/o file system, potrebbe cambiare ... In questo modo il codice e' portabile.

Un'ultima raccomandazione ... il codice funziona egualmente anche se usi un buffer piu' grande di 512 byte e, anzi, diventa molto piu' efficiente perche' esegue meno chiamate alle due funzioni e ottimizza l'accesso al disco. Ovviamente devi trovare un equilibrio con la memoria da utilizzare ma una dimensione del buffer di 64K o piu' dovrebbe andare molto meglio.