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;
}
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;
}