[C con Clase] Manejo de archivos
Programante
programante en gmail.com
Mie Sep 24 20:53:53 CEST 2008
Pablo Brunet escribió:
> bueno estoy probando el tema de archivos y elabore este algoritmo:
> # include <stdio.h>
> # include <iostream>
>
> using namespace std;
>
> main(void)
> {
> int r;
> FILE *pablo;
> pablo = fopen("E:\files.dat","rb");
> fread(&r,sizeof(r),1,pablo);
> while (!feof(pablo)){
> printf("%d",r);
> fread(&r,sizeof(r),1,pablo);}
> int fclose(FILE *pablo);
> cin.get();
> }
>
> pero hay un problema cuando lo ejecuta el programa se clava y debo
> cerrar la ventana, alcaro que el archivo files.dat contiene estos
> valores que yo le puse:
> 125 125
> 25 36
> 57 57
>
> debido a que no tengo idea como es un archivo binario en c, tal vez
> ahi radique el problema, en ese caso alguien me puede enviar un
> archivo binario para practicar este tema?, muchas gracias de nuevo!
Estás leyendo de forma binaria pero el archivo es de texto: Puede
salirte cualquier valor.
" int fclose(FILE *pablo); " no debería ni compilarte. Deberías hacer
fclose(pablo);
main debería devolver int
En vez de printf("%d",r);, pon printf("%d ",r); o printf("%d\n",r); para
saber cuál es cada valor.
De todos modos, el algoritmo no debería bloquearse. CAmbia !feof(pablo)
a !feof(pablo) && !ferror(pablo)
Comprueba también que abres el archivo if (!pablo) return 1;
Donde tienes "E:\files.dat" debería ser "E:\\files.dat" pues \ es el
caracter de escape, así que para poner una \ hay que escribirla doble.
Adjunto un archivo binario con los números del 1 al 5, de 32 bits en
little endian (te envío copia por si lo filtra la lista).
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: binario1-5
Type: application/octet-stream
Size: 20 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080924/1c3097b3/attachment.obj>
Más información sobre la lista de distribución Cconclase