Erreur procédure chargement fichier
Résolu
Franck7511
Messages postés
14296
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Erreur procédure chargement fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
Résolu : On devait écrire
Car il y a le caractère '\0' et le caractère '\n' !
char str_grillechar[longueur*hauteur +2];
Car il y a le caractère '\0' et le caractère '\n' !
Bonjour,
Bravo. Tu as trouvé tout seul. Je te joins les explications si cela t'intéresse :
Le fgets stocke le '\n' lorsqu'il y a suffisamment de place, ce qui est le cas ici. Du coup, un coup ton fgets() récupère le début de la ligne (sans le '\n') et le fgets() suivant récupère uniquement le '\n', ce qui pose problème lorsque tu recopies la ligne.
Sinon, des remarques sur ton code (hors la vérification des codes retours, etc. ;-)) :
atoi() est obsolète. Utilise plutôt strtol().
Dans ta fonction chargement2(), tu peux faire beaucoup plus rapide.
for (i = 0; i < longueur*hauteur; i++)
{
grille_demineur[i/longueur][i%longueur] = str_grillechar[i];
}
fgets(str_grille, (longueur*hauteur) +1, fp);
for (i = 0; i < longueur*hauteur; i++)
{
grille[i/longueur][i%longueur] = str_grille[i]-48;
}
Tu peux simplement faire :
De même pour la fonction de sauvegarde.
Cdlt,
Bravo. Tu as trouvé tout seul. Je te joins les explications si cela t'intéresse :
Le fgets stocke le '\n' lorsqu'il y a suffisamment de place, ce qui est le cas ici. Du coup, un coup ton fgets() récupère le début de la ligne (sans le '\n') et le fgets() suivant récupère uniquement le '\n', ce qui pose problème lorsque tu recopies la ligne.
Sinon, des remarques sur ton code (hors la vérification des codes retours, etc. ;-)) :
atoi() est obsolète. Utilise plutôt strtol().
Dans ta fonction chargement2(), tu peux faire beaucoup plus rapide.
for (i = 0; i < longueur*hauteur; i++)
{
grille_demineur[i/longueur][i%longueur] = str_grillechar[i];
}
fgets(str_grille, (longueur*hauteur) +1, fp);
for (i = 0; i < longueur*hauteur; i++)
{
grille[i/longueur][i%longueur] = str_grille[i]-48;
}
Tu peux simplement faire :
fgets((char*)grille_demineur, longueur*hauteur, fp); fgetc(fp); fgets((char*)grille, longueur*hauteur, fp); fgetc(fp);
De même pour la fonction de sauvegarde.
Cdlt,