salut , j'ai un probleme :
j'ai fait un code pour modifier une ligne d'un fichier :
-il copie les premieres lignes jusqu'a la ligne a modifier dans un autre fichier
-il rentre le ligne modifiéé dans le nouveau fichier a la suite
-il complete le nouveau fichier avec les lignes qui suivent dans le fichier d'origine
seul probleme , c'est que dans le nouveau fichier :
-il m'affiche les premieres lignes
-il m'affiche le ligne modifiéé
-il m'affiche la ligne d'origine qui etait a modifier
-il m'affiche les reste des lignes
j'aimerai qu'il ne m'affiche pas l'originale de la ligne a modifier dans le nouveau fichier
je sais que j'ai un probleme avec la position du curseur dans le fichier , mais des que j'ai changé des trucs dans le code source , ca faisais planter le programme et redemarrage a chaque fois
est ce que vous pourriez m'aider et me dire ce qui ne va pas plz ?
je vous montre mon code.
int sauvegarderNiveau(int niveau[][NB_BLOCS_HAUTEUR], int numeroLvl)
{
//variables
FILE* fichier = NULL;
FILE* fichier2 = NULL;
int caractereLu = 0;
char ligneFichier[NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1] = {0};
int numeroLvl1 = numeroLvl;
int i = 0, j = 0, k = 0;
fichier = fopen("niveaux.lvl", "r");
fichier2 = fopen("niveaux2.lvl", "w+");
if (fichier == NULL || fichier2 == NULL)
return 0;
rewind(fichier);
//affiche les premieres lignes
while ( k < numeroLvl1)
{
fgets(ligneFichier, NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1, fichier);
fputs(ligneFichier,fichier2);
caractereLu = fgetc(fichier);
if (caractereLu == '\n')
{
fputs("\n",fichier2);
k++;
}
}
//affiche la modification de la ligne a modifier
for (i = 0 ; i < NB_BLOCS_HAUTEUR ; i++)
{
for (j = 0 ; j < NB_BLOCS_LARGEUR ; j++)
{
fprintf(fichier2, "%d", niveau[j][i]);
}
}
fputs("\n",fichier2);
k++;
//affiche le reste des lignes
while(k <= 4)
{
fgets(ligneFichier, NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1, fichier);
fputs(ligneFichier,fichier2);
caractereLu = fgetc(fichier);
if (caractereLu == '\n')
{
fputs("\n",fichier2);
k++;
}
}
fclose(fichier2);
fclose(fichier);
remove("niveau.lvl");
rename("niveau2.lvl","niveau.lvl");
return 1;
}