Para hacer una clasificación por puntos en un juego, necesito leer el archivo de puntuaciones y buscar si el usuario aparece en dicho archivo. Si aparece, necesito escribir en el archivo la mayor puntuación que haya hecho. Si no aparece, pues lo coloco y punto.
He hecho un programilla que funciona bien si no comprouebo si está, pero a la que intento usar strcmp() me da resultados erróneos, y no sé dónde la estoy cagando.
Pongo el programa:
Código C:
Ver original
#include <stdio.h> #include <string.h> struct UsuariPuntuacio{ char nom[25], data[10]; int punts; struct UsuariPuntuacio *seg; }; int main() { struct UsuariPuntuacio *punt_primer, *punt_aux, punt, punt_actual; int punts, n_resultats=1, i=0, jugador_no_exist=1; char Jugador[25], data[25]; FILE *fitxer; if(fitxer==NULL) { }else{ punt_primer=&punt; punt_aux=&punt; { punt_aux=(*punt_aux).seg; n_resultats++; } punt_aux=punt_primer; i=0; while(i<n_resultats && jugador_no_exist!=0) { i++; punt_aux = (*punt_aux).seg; } }
El archivo "Puntuacions.txt" (de dónde saco las puntuaciones) tiene esta estructura:
Código:
El problema que tengo, como he dicho, es al usar strcmp() aquí:Joan López 10/10/2007 10540 Pere Valls 15/10/2007 10230 Anna Garcia 05/10/2007 8500
Código C:
Ver original
while(i<n_resultats && jugador_no_exist!=0) { i++; punt_aux = (*punt_aux).seg;
Si al ejecutar el programa pongo los siguientes datos:
Código:
(sólo me importaa la primera línea, el nombre) Este nombre está en el archivo, pero strcmp() me dice que no, que "Anna Garcia" del archivo es más largo (12 carácteres) que el "Anna Garcia" que he escrito yo (11 carácteres).Anna Garcia 05/01/2010 500
Puede ser que la función gets() no añada el carácter "\0" al final de la cadena??
Cómo puedo solucionarlo?
Muchísimas gracias :D
Nota: He probado de añadir este carácter con strcat() así: strcat(Jugador, "\0"); pero tampoco funciona.
En cambio, si pongo strcat(Jugador, "a\0"); (atención a la a) añade la letra, pero no el carácter final...