Problème de lecture fichier
Résolu
mornaloce
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
mornaloce Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
mornaloce Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voulant apprendre la programmation j'ai récemment réaliser le jeu Mario sobokan du site du zéro. J'ai ensuite voulu l'améliorer en y ajoutant de nouvelles fonctions. L'une d'elle consiste à enregistrer le dernier niveau jouer dans un fichier texte (avec l'extension ".lvl") puis lorsque que l'on relance le jeu on charge alors le dernier niveau jouer lors de la partie précédente. Là où j'ai un problème c'est que pour récupérer ce niveau j'ai créé une fonction qui ne marche que pour les nombre à un seul chiffre. Ainsi si le dernier niveau joué dépasse 9 ma fonction ne marche plus ou en tout cas pas comme je le voudrai puisque le chiffre entré dans ma variable est remplacé par le chiffre suivant, il n'y a donc qu'un chiffre de stocké à la fin même si au départ c'est un nombre à 2 chiffres. Est ce que quelqu'un pourrait m'aider ?
Voici mon code:
int chargerPartie()
{
FILE* fichier = NULL;
char ligneFichier[3] = {0};
int i = 0, lvl;
fichier = fopen("partie.lvl", "r");
if (fichier == NULL)
return 0;
fgets(ligneFichier, 3, fichier);
for(i = 0; i < 3; i++)
{
switch (ligneFichier[i])
{
case '0':
lvl = 0;
break;
case '1':
lvl = 1;
break;
case '2':
lvl = 2;
break;
case '3':
lvl = 3;
break;
case '4':
lvl = 4;
break;
case '5':
lvl = 5;
break;
case '6':
lvl = 6;
break;
case '7':
lvl = 7;
break;
case '8':
lvl = 8;
break;
case '9':
lvl = 9;
break;
}
}
fclose(fichier);
return lvl;
}
Merci d'avance pour votre aide.
Voulant apprendre la programmation j'ai récemment réaliser le jeu Mario sobokan du site du zéro. J'ai ensuite voulu l'améliorer en y ajoutant de nouvelles fonctions. L'une d'elle consiste à enregistrer le dernier niveau jouer dans un fichier texte (avec l'extension ".lvl") puis lorsque que l'on relance le jeu on charge alors le dernier niveau jouer lors de la partie précédente. Là où j'ai un problème c'est que pour récupérer ce niveau j'ai créé une fonction qui ne marche que pour les nombre à un seul chiffre. Ainsi si le dernier niveau joué dépasse 9 ma fonction ne marche plus ou en tout cas pas comme je le voudrai puisque le chiffre entré dans ma variable est remplacé par le chiffre suivant, il n'y a donc qu'un chiffre de stocké à la fin même si au départ c'est un nombre à 2 chiffres. Est ce que quelqu'un pourrait m'aider ?
Voici mon code:
int chargerPartie()
{
FILE* fichier = NULL;
char ligneFichier[3] = {0};
int i = 0, lvl;
fichier = fopen("partie.lvl", "r");
if (fichier == NULL)
return 0;
fgets(ligneFichier, 3, fichier);
for(i = 0; i < 3; i++)
{
switch (ligneFichier[i])
{
case '0':
lvl = 0;
break;
case '1':
lvl = 1;
break;
case '2':
lvl = 2;
break;
case '3':
lvl = 3;
break;
case '4':
lvl = 4;
break;
case '5':
lvl = 5;
break;
case '6':
lvl = 6;
break;
case '7':
lvl = 7;
break;
case '8':
lvl = 8;
break;
case '9':
lvl = 9;
break;
}
}
fclose(fichier);
return lvl;
}
Merci d'avance pour votre aide.
A voir également:
- Problème de lecture fichier
- Fichier epub - Guide
- Fichier bin - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
- Fichier 7z - Guide
2 réponses
Bonjour,
J'ai regardé en diagonale ton code ;
Je pense qu'en utilisant le fonction "atoi", ton problème sera résolu rapidement.
Cette fonction convertit une chaine de caractères en entier.
Donc faire simplement :
fgets(ligneFichier, 3, fichier);
lvl=atoi(ligneFichier);
--> Et abandonner ce switch affreux !!!!
N'hésites pas à te documenter sur cette fonction si tu rencontres des problèmes.
Cordialement,
Marc C.
J'ai regardé en diagonale ton code ;
Je pense qu'en utilisant le fonction "atoi", ton problème sera résolu rapidement.
Cette fonction convertit une chaine de caractères en entier.
Donc faire simplement :
fgets(ligneFichier, 3, fichier);
lvl=atoi(ligneFichier);
--> Et abandonner ce switch affreux !!!!
N'hésites pas à te documenter sur cette fonction si tu rencontres des problèmes.
Cordialement,
Marc C.