buenas, tengo ese codigo y en teoria los campos nom, nick y edat me los tiene que guardar en un archvo (jugadors.txt). Una vez compilado no me deja introducir la edad no se porque motivo y los datos nick y nom, se guardan pero de este tipo:
Manelet =C:\WINDOWS\syst« \ m x = x = NO_HOST_Manel Garcia HR54VMDManelet =C:\WINDOWS\syst«
donde las palabras en negrita son los datos que deberia guardar y lo otro no se que es.
Otra pregunta seria saber como puedo meterle un salto de linia despues de insertar cada dato.
Y en que falla el fscanf para que no me deje meter la edad.
seguire investigando, muchas gracias.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct registre_jugadors {
int edat;
char nom[20];
char nick[20];
struct registre_jugadors *seg;
}TipusJugador;
TipusJugador *inici;
TipusJugador* InserirPrimer(TipusJugador *inici)
{
TipusJugador *NouJugador;
FILE fitxer_jugadors;
// obrim el fitxer
fitxer_jugadors = fopen("jugadors.txt","w+");
// creem la memoria dinamica per registrar el jugador
NouJugador = (TipusJugador)malloc(sizeof(TipusJugador));
if(fitxer_jugadors==NULL)
printf("ERROR\n"); //no es pot escriure al fitxer
else
{
// demanem dades
fflush (stdin); // buidem el buffer del teclat
printf("\tNICKNAME:\n");
printf("\t---------\n");
gets(NouJugador->nick);
fwrite(&NouJugador->nick,sizeof(TipusJugador),1,fitxer_jugadors);
printf("\tNOM:\n");
printf("\t----\n");
gets(NouJugador->nom);
fwrite(&NouJugador->nom,sizeof(TipusJugador),1,fitxer_jugadors);
printf("\tEDAT:\n");
printf("\t-----\n");
fscanf(fitxer_jugadors,"%d",&NouJugador->edat);
}
fclose (fitxer_jugadors); // tanquem el fitxer
NouJugador->seg = inici;
inici = NouJugador;
return NouJugador;
}
int main()
{
printf("\t\t\t\t--------------------\n");
printf("\t\t\t\tRegistre de Jugadors\n");
printf("\t\t\t\t--------------------\n");
int op;
do
{
InserirPrimer(inici);
printf("Vols registrar un altre jugador? (1=si / 0=no)\n");
scanf("%d",&op);
}
while(op!=0 || op!=0);
}