• Sábado 14 de Diciembre de 2024, 17:37

Autor Tema:  Sos-parece Sencillo Pero Me Esta Volviendo Loca  (Leído 1038 veces)

esteruki

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Sos-parece Sencillo Pero Me Esta Volviendo Loca
« en: Miércoles 28 de Marzo de 2007, 17:42 »
0
Hola a todos os pongo en antecedentes, Tengo Visual Studio C++ 6.0

Yo me creo un proyecto de consola Win32 Console Aplication

Hago el siguiente Codigo:


Código: Text
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3.  
  4.  struct reg {
  5.   int id;
  6.          char nombre[10];
  7.          char apellido[10];
  8.          char telefono[10];
  9.  }&#59;
  10.  
  11.  int main()
  12.      {
  13.      FILE *fichero;
  14.      struct reg  registro={1,"Pepa","Flores", "915247854"};
  15.      fichero = fopen( "nombres.txt", "wb" );
  16.    
  17. fwrite(&registro,sizeof(reg), 1, fichero);
  18.  
  19.       fread(&registro, sizeof(reg), 1, fichero );
  20.      
  21.       printf( "Id: %d\n",&registro.nombre);
  22.       printf( "Nombre: %s\n", &registro.nombre );
  23.       printf( "Apellido: %s\n", &registro.apellido);
  24.       printf( "Teléfono: %s\n", &registro.telefono);
  25.                
  26.        
  27.      fclose( fichero );
  28.      return 0;
  29.      }
  30.  
  31.  


Pues este codigo tal cual nos escribe en el fichero la direccion de memoria en vez de los datos que le pasamos y tampoco nos lee y nos devuelve los datos,

Tras probar 15 mil cosas no lo hemos logrado

Por Favor ayudarme¡¡¡¡¡ Que me despiden

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Sos-parece Sencillo Pero Me Esta Volviendo Loca
« Respuesta #1 en: Miércoles 28 de Marzo de 2007, 17:53 »
0
en el archivo no se puede leer, solo escribir porque lo estas abriendo en modo 'wb' o sea escritura binario:

Código: Text
  1. fichero = fopen( "nombres.txt", "wb" );
  2.  

Si estas usando lenguaje C, esto esta mal:

Código: Text
  1. sizeof(reg)
  2.  

porque el tipo no es reg es struct reg:

Código: Text
  1. sizeof(struct reg)
  2.  

Adicionalmente si lo guardas asi:

Código: Text
  1. fwrite(&registro,sizeof(reg), 1, fichero);
  2.  

estas guardando
 1 entero y 4 char * lo cual no implica guardar el contenido de la cadena, solo el apuntador de la cadena.

por otro lado:

Código: Text
  1. fwrite(&registro,sizeof(reg), 1, fichero);
  2.  
  3. fread(&registro, sizeof(reg), 1, fichero );
  4.  

también esta mal por que una vez escribes el apuntador del archivo se mueve asi que para volver a leer lo que acabas de escribir debes reposicionar el archivo donde comenzaste a escribir... eso lo haces utilizando la función fseek.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Sos-parece Sencillo Pero Me Esta Volviendo Loca
« Respuesta #2 en: Miércoles 28 de Marzo de 2007, 17:54 »
0
Cita de: "esteruki"
Tras probar 15 mil cosas no lo hemos logrado

Por Favor ayudarme¡¡¡¡¡ Que me despiden
Si esas dos afirmaciones son ciertas, que lo dudo muchisimo, te lo mereces.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Sos-parece Sencillo Pero Me Esta Volviendo Loca
« Respuesta #3 en: Miércoles 28 de Marzo de 2007, 17:55 »
0
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Sos-parece Sencillo Pero Me Esta Volviendo Loca
« Respuesta #4 en: Miércoles 28 de Marzo de 2007, 18:32 »
0
Cita de: "Eternal Idol"
Cita de: "esteruki"
Tras probar 15 mil cosas no lo hemos logrado

Por Favor ayudarme¡¡¡¡¡ Que me despiden
Si esas dos afirmaciones son ciertas, que lo dudo muchisimo, te lo mereces.
 :lol:  :lol:  :lol:


Como dicen en mi trabajo, yo quiero soluciones no problemas, y los problemas los resuelvez tù...
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]