Bonjour,

Je suis en train de développer un jeu, et j'ai un problème concernant le score. En effet, je souhaite enregistrer le score à la fin de la partie dans un fichier .csv. Mais je veux que ce score se trie automatiquement à la fin de la partie. C'est à dire que mon fichier doit être rangé du plus grand score au plus petit.

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
FILE* file;
char **tab;
char score_text[20] = "";
int score_file;
file = NULL;
file = fopen("score.csv", "r+");
	if (file != NULL)
	{
		while (fgets(score_text, 50, file) != NULL)
		{
			tab = my_explode(score_text, ';');
			score_file = strtol(tab[0], (char **)NULL, 10);
			//Si le score actuel est plus grand que le score de la ligne lu
			if (score > score_file)
			{
				fseek(file, -(sizeof(score_text)), SEEK_CUR);
				sprintf(score_text, "%d;%d;\n", score, time);
				fputs(score_text, file);
				break;
			}
			tab = 0;
		}
		fclose(file);
	}
La fonction my_explode :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
char   **my_explode(char *str, char separator)
{
  char **res = NULL;
  int  nbstr = 1;
  int  len;
  int  from = 0;
  int  i;
  int  j;
  res = (char **) malloc(sizeof (char *));
  len = strlen(str);
  for (i = 0; i <= len; ++i)
    {
      if ((i == len) || (str[i] == separator))
   {
     res = (char **) realloc(res, ++nbstr * sizeof (char *));
     res[nbstr - 2] = (char *) malloc((i - from + 1) * sizeof (char));
     for (j = 0; j < (i - from); ++j)
         res[nbstr - 2][j] = str[j + from];
     res[nbstr - 2][i - from] = '\0';
     from = i + 1;
     ++i;
   }
    }
  res[nbstr - 1] =  NULL;
  return res;
}
La variable score est récupéré en argument de ma fonction de sauvegarde, ainsi que ma variable time.
Le problème est que le fputs écrit en fin de fichier et non à la position voulu, c'est à dire avant le score plus petit que celui fait dans la partie actuelle.

Si vous avez besoin de plus de renseignements, n'hésitez pas à me demander. Merci pour votre aide.

[EDIT] L'enregistrement du score est inscrit dans le fichier de la façon suivante : score;time;\n

Cordialement,
Ginwu