PDA

Ver la versión completa : Problema leyendo fichero binario (PNG)



kmkzk
18/05/2007, 19:45
Hola a todos,
Tengo un problemilla que me esta volviendo loco. Estoy programando en leguaje C.
El caso es que quiero hacer una funcion que trate ficheros PNG y para ello, como es logico lo primero de todo es leer el fichero. X)
Esto lo hago con la funcion fread, tomando un byte por paso de bucle.
El problema ocurre cuando por la mitad se encuentra con un byte con valor '\Z', valor ascii 26 (0x1A), que en ms-dos significa final de fichero, pero el fichero en realidad no ha terminado, pues aun quedan muchos bytes por leer.
No se como tratar este caso, si alguien pudiera echarme una mano, dios se lo pagaria con dinero, mujeres y mucho vino.
Gracias de antemano, y un saludo :)

Por si sirve de algo, pongo aqui el codigo simple simple:


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
FILE *F;
short int ch;
short int ret;

if(F=fopen("PNG.png","r")){
while(!feof(F)){
ret=fread(&ch,1,1,F);
printf("%X ",ch);
}
fclose(F);
}

else{
printf("Error abriendo fichero PNG!\n");
}
return 0;
}

rlyeh
18/05/2007, 21:06
abre el fopen con "rb" en vez de "r"

kmkzk
18/05/2007, 21:54
abre el fopen con "rb" en vez de "r"
JaaarL!!! Muchas gracias señor rlyeh, funciona perfect! Un par de horitas estube ayer comiendome el tarro y buscando soluciones chapuceras, pero nada.
Vaya cagada la mia... :D

Aiken
19/05/2007, 01:17
y ya que te pones no leas byte a byte lee el fichero entero de golpe a un buffer (array) y ahi lo procesas ;)

Aiken

neostalker
19/05/2007, 14:13
Je, la mayoría de las veces que se trabaja con ficheros pasa eso alguna vez xDDDD