bon salut a tous, j'ai un petit probleme d'ecriture dans un fichier dans uen fonction qui permet de sauvegarder un niveau
voila le fichier de niveaux est de cette forme:
le tag [level] sert de separateur de niveau et les informations apres concerne ce dont j'ai besoin pour jouer.
[level]
1
test.mp3
10101010101010101010
01010101010101010101
11111111111111111111
00010001000100010001
10010010010010010010
10001110111000100011
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
[level]
2
test.mp3
00000000000000000000
01010101010101010101
11111111111111111111
00010001000100010001
10010010010010010010
10001110111000100011
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
et ma fonction pour sauvegarder le niveau a en faite 2 fonction, si le niveau n'existe pas, elle l'ecrit a la fin du fichier, cette fonction marche bien mais l'autre partie (si le niveau existe, elle devrait le remplacer par celui en cours et ca ne marche pas)
pourtant en principe, mon pointeur est bien positionné et devrait ecrire par dessus le texte deja existant.
Code : C++
int Level::sauvegarder(int level)
{
FILE* fichier=NULL;
char chaineCourante[LIGNE_MAX]="";
int lvl=-1;
int ligne=0;
char *trouve;
int bon=0;
fichier = fopen("niveaux.bbg", "r+");
if(fichier == NULL)return0;
while(fgets(chaineCourante, LIGNE_MAX, fichier) != NULL && !bon)
{
ligne++;
// On cherche l'occurence du seperateur de level
trouve = strstr(chaineCourante, "[level]");
if(trouve != NULL)//on a trouve un level
{
lvl= atoi(fgets(chaineCourante, LIGNE_MAX, fichier));
if(lvl == level)//on a trouve le bon level
bon=1;
}
}
//ecriture du level...
if(!bon)//si on n'a pas trouvé le level
fprintf(fichier, "[level]\n%d\n",level);
fprintf(fichier, "%s", musique);
for(int i=0; i<10; i++)
{
for(int j=0; j<20; j++)
fprintf(fichier, "%d",brick[j][i]);
fprintf(fichier, "\n");
}
fclose(fichier);
return1;
}
si je fais un niveau.sauvegarder(4); le programme va correctement ecrire le niveau 4
mais si je fais un niveau.sauvegarder(2), il ne remplace pas le niveau2 actuel par celui que je veux.
ps: il manquerait une fonction code dans ce forum (ou alors j'ai pas bien regardé)