Problemita con FILES

Iniciado por clodan, 6 Octubre 2010, 18:42 PM

0 Miembros y 1 Visitante están viendo este tema.

clodan

bueno, este es mi code:

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

struct sis{
       char cod;
       char titu;
       char aut;
       char edit;
       int ano;
       char gene;
       };

char * prog="DATA.file";
FILE * pf = NULL;

int main(int argc, char *argv[]){
  struct sis base[3000];
  pf = fopen( prog, "ab");
  if (pf=NULL){
        printf("Error al Crear, Abrir o Modificar el Archivo");
        while (getchar()!='\n');
        return 0;
        }
  printf("DATA.file abierto.\n");
  printf("Leyendo Datos de DATA.file. Por favor espere...\n");
  while ( !feof(pf)){
        fread( &base, sizeof(base), 1, pf);
        }
  printf("Sistema Interno...\n");
  printf("Eliga la opcion que desea realizar:\n");
  printf("1.");
  while (getchar()!='\n');
  return 0;
}


cada vez que lo pongo a funcionar me tira error y se queda en el momento que tiene que leer los datos. Estamos recien arrancando con lectura y modificacion de archivos asi que por favor, todo en castellano basico! jejejeje

gracias!!!!

[L]ord [R]NA

lo que sucede es que estas abriendo el archivo solo para escritura... 'a' sirve para añadir datos al final del archivo simplemente... en este caso necesitas 'a+' que te da permisos de lectura.

clodan

Cita de: Lord R.N.A. en  6 Octubre 2010, 19:42 PM
lo que sucede es que estas abriendo el archivo solo para escritura... 'a' sirve para añadir datos al final del archivo simplemente... en este caso necesitas 'a+' que te da permisos de lectura.

probe y me sigue tirando error... :s
pf = fopen( prog, "a+b");
osea le puse:

[L]ord [R]NA


Jaixon Jax

if (pf=NULL)

alli esta el error seria:

if (pf==NULL)

clodan

#5
Cita de: Jaixon Jax en  6 Octubre 2010, 20:18 PM
if (pf=NULL)

alli esta el error seria:

if (pf==NULL)

ya corregi eso, igualmente se sigue colgando en la parte de lectura de datos, como si nunca saliera del bucle me parece


CORREGIDO!!!

El problema esta en el no me detectaba el feof...
entonces puse asi:
while ( x!=feof(pf)){       
          x=fread( &base, sizeof(base), 1, pf);         
          }