pitidragon
Messages postés27Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention21 mai 2008
-
20 mai 2008 à 18:04
pitidragon
Messages postés27Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention21 mai 2008
-
21 mai 2008 à 15:38
Bonjour à tous !
J'ai besoin d'aide pour finaliser un projet pour la fac. Je dois réaliser un démineur, et j'ai un petit soucis pour finir. Je dois gérer les meilleurs scores et donc en cas de meilleur score écrire ce score dans un fichier.
Mon fichier texte est très simple, au début les scores sont initialisés à 999, avec une ligne par niveau :
999
999
999
999
J'ai écrit une fonction pour se placer sur la ligne qui correspond au niveau de jeu, et écrire le score à cette ligne :
int ecrire_score(int choix, double score)
{
FILE *f;
int i=1;
char temp;
f=fopen("Score","r+t");
if(f==NULL)
{
perror("Erreur d'ouverture du fichier ");
}
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 20 mai 2008 à 18:49
Ce n'est pas parce que le code compile qu'il est correct.
Cette section ne fonctionnera pas d'avantage. Si l'erreur n'est pas située là lors du plantage, c'est simplement qu'il n'a pas exécuté ce bout de code (il a planté avant).
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 20 mai 2008 à 18:53
Ou alors i == choix lors de l'exécution ou il y a eu une erreur lors de l'ouverture du fichier. Menfin bref, le programme ne s'est pas rendu jusque là.
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 20 mai 2008 à 19:02
Bonjour,
C'est peut-être une bêtise mais est-ce que celà ne serait pas plutôt dû à l'alignement en mémoire sur des blocs de 4 octets ?
Le caractère temp occupe bien un octet mais les 3 qui suivent sont bloqués par l'alignement des données sur 4 octets, donc la lecture déborde dessus sans rien casser puisqu'il n'y a, justement, que 4 caractères à lire (3 caractères du nombre + fin de ligne) !
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 20 mai 2008 à 19:06
Je ne pense pas. J'ai fais les tests et, sous linux du moins, l'erreur de segmentation est bien détectée peut-importe qu'il y ait une variable qui suit ou non.