Problème de lecture fichier
Résolu
mornaloce
Messages postés
51
Statut
Membre
-
mornaloce Messages postés 51 Statut Membre -
mornaloce Messages postés 51 Statut Membre -
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 bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - 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.