Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con punteros y datos basura

Estas en el tema de Problema con punteros y datos basura en el foro de C/C++ en Foros del Web. Hola y buen día a todos, verán tengo unas pequeñas dudas con respecto a un código que es el siguiente : Código: #include <stdio.h> #include ...
  #1 (permalink)  
Antiguo 03/02/2009, 14:07
 
Fecha de Ingreso: enero-2009
Mensajes: 78
Antigüedad: 15 años, 3 meses
Puntos: 0
Problema con punteros y datos basura

Hola y buen día a todos, verán tengo unas pequeñas dudas con respecto a un código que es el siguiente :

Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


struct personaje
{
   char nombre[10];
   char hp[10];
   char mp[10];
};




int main()
{  
   struct personaje personaje1;    
   FILE *archivo;
   int x=0; 
   archivo = fopen("C:/fichero_fwrite.txt","w+");
   do
   {  
       fflush(stdin);
       printf("Introduce el nombre:"); fflush(stdout); 
       gets(personaje1.nombre);
       printf("Introduce el hp:");     fflush(stdout); 
       gets(personaje1.hp);
       printf("Introduce el mp:");      fflush(stdout); 
       gets(personaje1.mp);
       fwrite(&personaje1,sizeof(personaje1),1,archivo);
       printf("Desea agregar otro personaje?"); fflush(stdout);
       fflush(stdout);
       scanf("%i",&x); fflush(stdout);
   }  while (x!=1);
   fclose(archivo);  
}
No me genera ningún error y "funciona", sin embargo, a la hora de checar el archivo que generé me encuentro con datos basura entre los datos del registro, por ejemplo supongamos que personaje1.nombre="fulano",personaje1.hp="45",pers onaje1.mp="3".
En el archivo se muestra esto :

fulano h<45 *®Àw3 #C¶€|¨ÿ

¿Qué se supone que tengo que hacer para que esta basura no me aparezca?.

La otra duda es que si cambio la definición del struct por :
Código:
struct personaje
{
   char nombre[];
   char hp[];
   char mp[];
};
No me genera ningún error pero el archivo se genera completamente vacío, y si escribo el struct como :
Código:
struct personaje
{
   char *nombre;
   char *hp;
   char *mp;
};
Me genera un error en tiempo de ejecución a la hora de leer cualquiera de los tres campos,el error es del tipo "windows a detectado un error y debe cerrarse" ¿estoy haciendo algo mal o de plano no se puede hacer con ninguna de estas definiciones?

Saludos y gracias por su tiempo XD
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:01.