• Domingo 5 de Mayo de 2024, 04:54

Autor Tema:  Re: Problema Al Cargar Texto De Un Fichero  (Leído 2404 veces)

krouz

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Problema Al Cargar Texto De Un Fichero
« en: Miércoles 28 de Abril de 2004, 13:40 »
0
Buenas a todos de nuevo;

Para los visitantes asiduos que me ayudaron en otra ocasión, quizá recuerden ese proyecto de ajedrez en "C" que empecé hace tiempo. Pues bien, el tema es que lo he llevado adelante y está bastante avanzado.

Pero no todo es tan fácil, y a la hora de meter en un fichero ".dat" el contenido de dos arrays, luego no consigo extraerlos apra su posterior uso. Ya sé que me explico mal, en resumen es esto:

Tengo un array de 8x8 numérico y quiero guardarlo en un fichero, y posteriormente poder cargarlo de nuevo en el mismo array. Si alguien me lo revisa se lo agradeceré. Adjunto el fichero:

PD: Cambien la ruta de guardado.


Un saludo, seguiré mirandolo detenidamente :hola: .
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema Al Cargar Texto De Un Fichero
« Respuesta #1 en: Miércoles 28 de Abril de 2004, 17:16 »
0
Código: Text
  1.  
  2. //creando fichero
  3. if((fsave=fopen("c:/tc/unai/dats/save.dat","a+b"))==NULL)
  4. {
  5. printf("\nError de permiso de escritura en disco.");
  6. getch();
  7. exit(0);
  8. }
  9. fclose(fsave);
  10.  
  11.  
  12. //sobreescribiendo fichero
  13. fopen("c:/tc/unai/dats/save.dat","r+b");
  14.  
  15.  
Aca esta creando, cerrando y volviendo a abrir el archivo..
con hacer esto seria suficiente:
Código: Text
  1.  
  2. if((fsave=fopen("c:/tc/unai/dats/save.dat","a+b"))==NULL)
  3. {
  4. printf("\nError de permiso de escritura en disco.");
  5. getch();
  6. exit(0);
  7. }
  8.  
  9.  
ya que en modo 'a' crea o sobrescribe un archivo.
por otro lado creo que no se coloca el '+' es decir solo queda 'ab'.
----
fread(&fsave,sizeof(rsave),1,fsave);

esto esta mal!!!

fsave es un apuntador al archivo asi que colocarlo al final esta bien..
pero al comienzo?.. para que lo unico que harias seria sobreescribir el apuntador del archivo ocn el contenido de si mismo!!!

para fread el primer parametro es el buffer es decir una variable donde almacenaras lo que leas desde el archivo:ejemplo:
---archivo plano de texto---jk.txt
hola
-------
Código: Text
  1.  
  2. int main()
  3. {
  4.   FILE *f;
  5.   char p[4]&#59;
  6.  
  7.   f=fopen("jk.txt","r");
  8.  
  9.   fread(p,sizeof(char)*4,f);
  10.   printf("archivo: %s",p);
  11.   return 0;
  12. }
  13.  

deben de haber mas errores pero con esto es suficiente por el momento.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

krouz

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Problema Al Cargar Texto De Un Fichero
« Respuesta #2 en: Miércoles 28 de Abril de 2004, 19:25 »
0
Primero de todo, muchas gracias por interesarte JuanK, te lo agradezco mucho, pues se trata de mi proyecto de fin de curso y estoy todos los días con él.

Por supuesto este es sólo el fragmento de salvado y cargado de partida, el resto de código es más sencillo.

Con los errores que he revisado y me has dicho creo que no he arreglado nada :( . Resulta que le he mostrado el problema a mi profesora, ha estado hora y media cambiando el código, agregando fseek y demás opciones que comentabas, y ni aún así ella lo ha conseguido. Me parece extraño, pues la profesora debiera haberlo solucionado a mi parecer :unsure: .

Como veo que esto me traerá más quebraderos, y viendo que has leido mi código, te pediría por favor que me posteases un código lo más breve posible para guardar los datos de dos arrays en un fichero .dat y para cargarlos posteriormente en sus respectivas matrices. Pero no quiero abusar de su ayuda, con lo que con el pseudocódigo me sería suficiente, tengo ganas de que funcione prontito.

Un saludo,  y gracias :hola: .

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema Al Cargar Texto De Un Fichero
« Respuesta #3 en: Miércoles 28 de Abril de 2004, 20:05 »
0
ME EXTRAÑA QUE UN PROFESOR TENGA PROBLEMAS CON ESO!!!!!!!!
BUENO REALMENTE NO ME EXTRAÑA....
escribir
Código: Text
  1.  
  2. #include <stdio.h>
  3. int main()
  4. {
  5.   char ar[5]{'a','b','c','d'};
  6.   FILE *f;
  7.   
  8.   if(f = fopen("file.txt","at+")!=NULL)
  9.   {
  10.      fwrite(ar,sizeof(ar),1,f);
  11.      fclose(f);
  12.   }
  13.   else
  14.   {
  15.       return 0;
  16.   }
  17.   return 1;
  18. }
  19.  
  20.  
leer
Código: Text
  1.  
  2. #include <stdio.h>
  3. int main()
  4. {
  5.   char ar[5];
  6.   FILE *f;
  7.  
  8.   memset(ar,'\0', sizeof(ar));
  9.  
  10.   if(f = fopen("file.txt","t+")!=NULL)
  11.   {
  12.      fread(ar,sizeof(ar),1,f);
  13.      printf("esto se leyo del archivo : %s",ar);
  14.      getch();
  15.      fclose(f);
  16.   }
  17.   else
  18.   {
  19.       return 0;
  20.   }
  21.   return 1;
  22. }
  23.  
  24.  

como se abrio el archivo con 'a'.. no se requiere usar fseek para mover el apuntador, ya que este siempre se reposiona al final del archivo... ademas cmomo solo vas a esacribiur una variable en el ejemplo.. pues menos se necesita fseek
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

krouz

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Problema Al Cargar Texto De Un Fichero
« Respuesta #4 en: Jueves 29 de Abril de 2004, 21:50 »
0
Gracias por intentar ayudar de nuevo, me estudiaré esas líneas de código que me has escrito.

Espero solucionarlo en breve, nos vemos :hola: .

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema Al Cargar Texto De Un Fichero
« Respuesta #5 en: Jueves 29 de Abril de 2004, 21:57 »
0
cometi un error en el codigo de leer , ya lo corregí.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Rataman

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Problema Al Cargar Texto De Un Fichero
« Respuesta #6 en: Viernes 30 de Abril de 2004, 01:47 »
0
tu problema es k usas mal tanto fwrite como fread.
seria algo asi:

Código: Text
  1. FILE *puntero;
  2.  
  3. struct...
  4. ...
  5. ...  //resto del codigo
  6.  
  7. fwrite(&rsave,sizeof(rsave),1,puntero);
  8.  
  9. //y en el caso de fread si k necesitas fseek.
  10.  
  11. fseek(puntero,posicion*sizeof(rsave),0);
  12. fread(&rsave,posicion*sizeof(rsave),1,puntero);
  13.  
  14. //el valor de la variable posicion dependera d como tengas
  15. //organizado tu fichero
  16.  
  17.  
  18.  

un consejo, a la estructura no la llames tan parecida al puntero,te confundiras...
si necesitas ayuda, puedes contactar por email (rtmpel@hotmail.com)
yo tb estoy haciendo un proyecto con ficheros  :hola:

AbBaDoN

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Problema Al Cargar Texto De Un Fichero
« Respuesta #7 en: Sábado 15 de Mayo de 2004, 23:16 »
0
El problema que he visto en el codigo es que usas mal los modos de apertura de los archivos. Como regla simple, los modos en funcion de lo que se requiere serian:

"rb"     - Solo lectura
"wb"    - Creacion de archivo
"rb+"   - Modificacion de un archivo existente

La "b" es para poder abrir sin importar si es un archivo de caracteres o en codigo ejecutable. La tercera opcion "rb+" es muy buena porque si el archivo no existe da error. Jamas he usado el modo "a" en ningun caso, ya que el inicio del archivo no puede ser modificado ni accesado, por lo que me parece un modo bastante inutil a los problemas que he tenido. ;)