Hey Leute!
Bin grad dabei was zu schreiben, in dem dann auch Daten in einer *.txt-Datei gespeichert werden. Es handelt sich darum, dass ein Highscore gespeichert wird.
Hier der Code:
Das Problem ist das fprintf() in der 34.Zeile. Wenn die Highscore auf 0 ist und man also quasi das erste Mal spielt, funktioniert alles bestens und man ist dann logischerweise erster. Nur ab dem zweiten mal abspeichern funktioniert das oben genannte fprintf() nicht. Ich habe auch einmal ein system("pause") direkt nach dem fprintf() geschrieben, um nachzusehen ob das fprintf() wirklich nichts tut und es ist so.
Weiß jemand was da zu machen ist?
Lg: Ibafluss
Bin grad dabei was zu schreiben, in dem dann auch Daten in einer *.txt-Datei gespeichert werden. Es handelt sich darum, dass ein Highscore gespeichert wird.
Hier der Code:
Code:
void highscoreabfrage (int cou, FILE *scores)
{
int i, a, highscore, j, s_wert; // in a werden die Plätze der eingelesenen Rangliste gespeichert. In highscore werden die scores der Plätze der eingelesenen Rangliste gespeichert.
char puffer[20], save[20]; // in s_wert wird der Rückgabewert von scanf() gespeichert
scores = fopen ("Snake_Highscore.txt", "r+");
if (scores == NULL)
{
printf ("\nHighscores nicht verfuegbar ...\n\n");
return;
}
else
{
for (i = 0; i < 5; i++)
{
s_wert = fscanf (scores, "%d. %d\n", &a, &highscore);
if (s_wert != 2) // Falls es vor dem Ende zu einer fehlerhaften Eingabe kommen sollte
{
fprintf (stderr, "\nFehler beim Speichern der Highscore ...\n\n");
return;
}
if (cou > highscore)
{
fseek (scores, 0L, SEEK_SET);
for (j = 0; j < i; j++)
{
fgets (puffer, 20, scores);
}
fprintf (scores, "%d. %d\n", j+1, cou); // Der neue Wert wird an der passenden Stelle eingefügt und die Highscore wird überschrieben
printf ("\nGratulation! Du hast im Highscore den %d.Platz erreicht!\n\n", j+1);
fgets (save, 20, scores);
fseek (scores, 0L, SEEK_SET);
for (j = 0; j < i+1; j++)
{
fgets (puffer, 20, scores);
}
if (j == 5)
{
return;
}
fprintf (scores, "%d. %d\n", i+2, highscore); // Jetzt wird der vom Vergleich gespeicherte Werte einen Platz darunter eingefügt
for (i = i+2; i < 5; i++)
{
fprintf (scores, "%s", save);
fseek (scores, 0L, SEEK_SET);
for (j = 0; j < i; j++)
{
fgets (puffer, 20, scores);
}
fgets (save, 20, scores);
}
return;
}
}
printf ("\nSie haben es leider nicht in die Highscore geschafft ...\n\n");
return;
}
}
Das Problem ist das fprintf() in der 34.Zeile. Wenn die Highscore auf 0 ist und man also quasi das erste Mal spielt, funktioniert alles bestens und man ist dann logischerweise erster. Nur ab dem zweiten mal abspeichern funktioniert das oben genannte fprintf() nicht. Ich habe auch einmal ein system("pause") direkt nach dem fprintf() geschrieben, um nachzusehen ob das fprintf() wirklich nichts tut und es ist so.
Weiß jemand was da zu machen ist?
Lg: Ibafluss