
14/02/2011, 10:49
|
| | Fecha de Ingreso: octubre-2010 Ubicación: madrid
Mensajes: 10
Antigüedad: 14 años, 5 meses Puntos: 0 | |
lectura de ficheros con fread en c bueno mi duda es muy básica. pero por mucho que la miro, no termino de entender que pasa:
tengo este código:
int bienvenida(char nombre[10])
{
FILE *fichero_nombres;//el puntero para gestionar el fichero
int opcion, contador=1;
char letra;
printf("Bienvenido al juego de tres en raya\n\n");
printf("1. JUGADOR NUEVO\n");
printf("2. JUGADOR REGISTRADO\n");
scanf("%i", &opcion);
switch(opcion)
{
case 1:
fflush(stdin);
printf("Debes registrarte antes de comenzar para formar parte del ranking y las estadísticas");
printf("Introduce tu nombre(maximo 10 caracteres):\n\n");
fichero_nombres = fopen("jugadores.txt","a");//se posiciona al final del archivo
if(fichero_nombres== NULL)
{
printf("Problema con los ficheros.\n");
exit( 1 );
}
gets(jugador.nombre);
fwrite( &jugador, sizeof(jugador), 1, fichero_nombres );
printf("Gracias por registrarte\n");
break;
case 2:
fichero_nombres = fopen("jugadores.txt","r");//se posicionaen el archivo para lectura
if(fichero_nombres== NULL)
{
printf("Problema con los ficheros.\n");
exit( 1 );
}
printf("Elije tu nombre de la siguiente lista:\n");
do
{
printf("%i. ", contador);
fread( &jugador, sizeof(jugador), 1, fichero_nombres );
contador++;
printf("%s\n\n", jugador.nombre);
}while ( feof(fichero_nombres)==0 );
break;
}
el problema reside aquí al final del archivo. a la hora de listar los nombres de los jugadores registrados, el ultimo se repite. es decir si el ultimo es Jonathan, pone:
1.jose
2.marcos
3.jonathan
4.jonathan
por que se repite?alguien podría ayudarme? y darme un breve explicación del porque?
gracias por anticipado. |