gusdark
Messages postés10Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention12 janvier 2010
-
26 oct. 2006 à 00:13
gusdark
Messages postés10Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention12 janvier 2010
-
26 oct. 2006 à 13:01
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");
gusdark
Messages postés10Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention12 janvier 2010 26 oct. 2006 à 13:01
j'ai rajouté cette ligne :
fgets(ligneFichier, NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR+1,fichier);
juste pares le fputs("\n",fichier2); de la ligne modifiée , mais ca a planté et je me retrouve avec un fichier niveau2.lvl qui prend 300 000 - 400 000 ko donc ya unn probleme et je vois pas ou........ c tres frustant.
qqn a une solution
merci quand meme a toi totol.