Código:
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".#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); }
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:
No me genera ningún error pero el archivo se genera completamente vacío, y si escribo el struct como :struct personaje { char nombre[]; char hp[]; char mp[]; };
Código:
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?struct personaje { char *nombre; char *hp; char *mp; };
Saludos y gracias por su tiempo XD