PDA

View Full Version : Codice in c per copiare bitmap


MauryWeb
20-02-2003, 12:28
Non riesco a ricopiare un file bitmap :cry:

ho provato con il fgetc e fputc ma, da quello che ho capito appena trova un byte di valore 0x1A fgetc ritorma -1==> EOF e invece il file non è ancora finito...

aiutatemi vi prego :D

Tra l'altro in fase di compilazione mi da un errore che secondo me non è un errore: in poche parole all'istruzione:

H_file=CreateFile(....);

mi dice errore di sintassi '='

eppure la funzione CreateFile restituisce un valore di tipo void* e anche H_file è dello stesso tipo, e anche se cambio tipo, l'errore persiste...


Qualcuno di voi sa usare la CreateFile????

Tanks


(sono quasi due post in uno, vale ;) ;) ;) ????)

lombardp
20-02-2003, 13:00
Potresti riportare per esteso la porzione di codice che genera l'errore?

mjordan
20-02-2003, 20:46
Originally posted by "MauryWeb"

Non riesco a ricopiare un file bitmap :cry:

ho provato con il fgetc e fputc ma, da quello che ho capito appena trova un byte di valore 0x1A fgetc ritorma -1==> EOF e invece il file non è ancora finito...

aiutatemi vi prego :D

Tra l'altro in fase di compilazione mi da un errore che secondo me non è un errore: in poche parole all'istruzione:

H_file=CreateFile(....);

mi dice errore di sintassi '='

eppure la funzione CreateFile restituisce un valore di tipo void* e anche H_file è dello stesso tipo, e anche se cambio tipo, l'errore persiste...


Qualcuno di voi sa usare la CreateFile????

Tanks


(sono quasi due post in uno, vale ;) ;) ;) ????)

L'errore consiste nel fatto che un immagine bitmap va letta in modalità binaria e non in modalità carattere, come stai facendo tu.
Usare un ciclo per leggere il file fin quando non è finito in questo modo:


while ((c = fgetc(fp)) != EOF) {
...
...
...
}


è scorretto.
Dovresti utilizzare invece la modalità binaria, aprire cioè il file con il flag "+b" ed utilizzare la macro "feof" per determinare quando il file è finito, cioè:


while (!feof(fp)) {
...
...
...
}


Il prototipo della macro feof() è:


int feof(FILE * fp);


Nota che il secondo metodo, a differenza del primo, va bene per la lettura di file sia in modalità binaria che carattere ed è quindi da preferire. ;)

Spero di esserti stato d'aiuto.