[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