elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Manejo de ficheros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Manejo de ficheros  (Leído 4,245 veces)
Gr1nD3r

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Manejo de ficheros
« en: 18 Julio 2010, 01:35 am »

Antes de nada, el codigo del progrma:

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

main(){
   struct{
      char nombre[40];
      int edad;
      char lugarResidencia[100];   
   }persona;
   FILE *fichero;
   char linea[80];
   
   printf("Introduzca nombre: ");
   gets(persona.nombre);
   printf("Introduzca edad: ");
   scanf("%d",&persona.edad);
   getchar();
   printf("Lugar de residencia: ");
   gets(persona.lugarResidencia);

   
   fichero=fopen("gente.dat","w");
   fputs(persona.nombre,fichero);
   fputs(persona.lugarResidencia,fichero);
   fprintf(fichero,"%d",&persona.edad);
   fclose(fichero);
   
   fichero=fopen("gente.dat","r");
   fgets(linea,strlen(persona.nombre)+1,fichero);
   printf("Se llama: ");
   puts(linea);
   fscanf(fichero,"%d",&persona.edad);
   printf("Tiene %d años",persona.edad);
   fgets(linea,strlen(persona.lugarResidencia)+1,fichero);
   printf("\nVive en: ");
   puts(linea);
   system("PAUSE");
   fclose(fichero);
}

El programa funciona perfecto, pero cuando abro el fichero, la variable edad del struct no la guarda bien, y se inventa el valor. ¿Alguien sabe cual puede ser el fallo?
Gracias


En línea

cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Manejo de ficheros
« Respuesta #1 en: 18 Julio 2010, 01:45 am »

Fijate en los warnings al compilar:

Código:
26: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘int *’

Deberías de modificar la forma en que pasas el parámetro edad de la estructura.


Código:
l.c:(.text+0x30): warning: the `gets' function is dangerous and should not be used.

Pasate por aqui:
https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html


En línea

nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: Manejo de ficheros
« Respuesta #2 en: 18 Julio 2010, 01:49 am »

Gr1nD3r, bienvenid@!

Te recomiendo usar las etiquetas GeSHI o code para postear codigo fuente para que sea mas legible, utiliza el boton modificar

Te invito a que pases por estos temas...

Deberias leer algo sobre escritura y lectura de ficheros, particularmente para empezar te recomiendo que leas estos libros...

> El Lenguaje de Programación C - Brian W. Kernighan, Dennis M. Ritchie
> Cómo Programar en C/C++ - Harvey M. Deitel, Paul J. Deitel

https://foro.elhacker.net/programacion_cc/librospapers_c_and_c-t296234.0.html

Código:
main()

Código:
gets(...)

https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

No es recomendable hacer llamadas al sistema para hacer una pausa en el programa, ademas sumandole que no es para nada portable

Salu10.
« Última modificación: 18 Julio 2010, 01:58 am por [NicolaS] » En línea

Gr1nD3r

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Manejo de ficheros
« Respuesta #3 en: 18 Julio 2010, 02:04 am »

Otra pregunta: Que compiladores usais???
En línea

nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: Manejo de ficheros
« Respuesta #4 en: 18 Julio 2010, 02:11 am »

Gr1nD3r, utilizo GCC en GNU/Linux

Si usas Windows te recomiendo usar el compilador de VisualC++, MinGW o Cygwin (estos 2 ultimos son GCC, en sus versiones para Microsoft)

Por favor te ruego no usar el compilador de Borland ;D

Salu10.
En línea

Gr1nD3r

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Manejo de ficheros
« Respuesta #5 en: 18 Julio 2010, 02:18 am »

Ok. Yo siempre he utilizado Dev-C++ con Mingw
En línea

cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Manejo de ficheros
« Respuesta #6 en: 18 Julio 2010, 02:25 am »

Ok. Yo siempre he utilizado Dev-C++ con Mingw

También uso gcc. Que raro, en el ide no te mostraba los warnings?  :-\
En línea

Gr1nD3r

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Manejo de ficheros
« Respuesta #7 en: 18 Julio 2010, 02:32 am »

K va. No me muestra ningun Warning
En línea

cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Manejo de ficheros
« Respuesta #8 en: 18 Julio 2010, 02:32 am »

Te recomiendo CodeBlocks.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Manejo de ficheros: Me da el error al abrir el fichero, por que?
Programación C/C++
Firos 2 2,753 Último mensaje 11 Abril 2011, 16:15 pm
por Firos
Duda sobre manejo de ficheros
Programación C/C++
тαптяα 6 2,747 Último mensaje 8 Septiembre 2011, 22:06 pm
por тαптяα
Duda con manejo de Ficheros
Programación C/C++
Hack-11 3 2,358 Último mensaje 27 Noviembre 2011, 22:08 pm
por Eternal Idol
Manejo con ficheros
Programación C/C++
Eva93 1 1,575 Último mensaje 11 Septiembre 2013, 21:14 pm
por amchacon
Ayuda con manejo de ficheros en c++
Programación C/C++
ArashiTensei 8 3,271 Último mensaje 25 Noviembre 2014, 00:39 am
por ArashiTensei
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines