Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème dans un enregistrement de scores.

    25 février 2006 à 19:13:03

    Après avoir lu le chapitre sur les fichiers, j'ai voulu compléter le mini-jeu réalisé en TP précédement (le Plus Ou Moins). Quand il s'agit de garder un unique score ça va, mais là j'ai voulu garder 3 scores avec le nom de celui qui les a réussi (un par difficultée) et j'ai un bug que je vais poliment qualifier d'énervant.

    Donc, quand je joue en facile ça enregistre le score niquel, mais quand je jouu en intermédiaire ou difficile il n'y a juste aucune modification dans le fichier, alors que les informations à rentrer existent bien.

    Le code que je met ci-dessous est une partie de la fonction qui enregistre les scores.
    Il n'y a pas d'erreur de conpilation (donc toutes les variables sont crées et les fonction sont bien écrites et tout) et les scores sont enregistrés dans le fichier score.txt sous ce schéma :

    Nom1(+assez d'espace pour faire 30 caractère)
    score en 1 chiffre
    Nom2(+assez d'espace pour faire 30 caractère))
    ....


    switch(difficulte)
    {
    case 1:
    if(essai<scoreFacile)
    {
    printf("!!Vous avez realise le meilleur score!! \n\n Entrez votre nom : ");
    scanf("%s", joueur);
    longueurJoueur = strlen(joueur);
    espaces=29-longueurJoueur;
    rewind(score);
    fprintf(score,"%s", joueur);
    for (compteur = 0 ; compteur < espaces ; compteur++)
    {
        fprintf(score," ");
    }
    fprintf(score,"\n");
    fprintf(score,"%ld", essai);
    }
    break;
    case 2:
    if(essai<scoreMoyen)
    {
    printf("!!Vous avez realise le meilleur score!! \n\n Entrez votre nom : ");
    scanf("%s", joueur);
    longueurJoueur = strlen(joueur);
    espaces=29-longueurJoueur;
    rewind(score);
    while (fgetc(score) != '\n')
    ;
    while (fgetc(score) != '\n')
    ;
    fprintf(score,"%s", joueur);
    for (compteur = 0 ; compteur < espaces ; compteur++)
    {
        fprintf(score," ");
    }
    fprintf(score,"\n");
    fprintf(score,"%ld", essai);
    }
    break;
    case 3:
    if(essai<scoreDur)
    {
    printf("!!Vous avez realise le meilleur score!! \n\n Entrez votre nom : ");
    scanf("%s", joueur);
    longueurJoueur = strlen(joueur);
    espaces=29-longueurJoueur;
    rewind(score);
    while (fgetc(score) != '\n')
    ;
    while (fgetc(score) != '\n')
    ;
    while (fgetc(score) != '\n')
    ;
    while (fgetc(score) != '\n')
    ;
    fprintf(score,"%s", joueur);
    for (compteur = 0 ; compteur < espaces ; compteur++)
    {
        fprintf(score," ");
    }
    fprintf(score,"\n");
    fprintf(score,"%ld", essai);
    }
    break;
    }



    Ce qui est lourd c'est que dans le case = 1 (difficultée facile) ça marche niquel mais dans les autres ça foire.

    Si vous avez une idée...

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      25 février 2006 à 20:02:04

      Première réponse rapide : t'aurais pu indenter ton code, ça aurais plus donner envie de le regarder... Mais bon, tu as utilisé la balise code, c'est pas si mal...

      Au fait, il semblerai que le problème vienne de cette ligne (c'est la seule différence entre le score facile et les autres) :

      while (fgetc(score) != '\n');


      Ouais, l'erreur viens bien de cette ligne... un programme sans autre soruce d'erreur possible n'a aucun effet lui non plus... essaie de refaire ce passage, ton programme marchera (je te le ferait bien, mais une source d'occupation viens de me tomber dessus sans prévenir ^^)
      a++ bon courage^^
      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2006 à 21:19:40

        Il faut alors que je trouve une autre manière de sauter une ligne.
        J'vais essayer de faire un fgets inutile.



        EDIT : Bon en fait c'était nul ... à la place de m'embéter à sauter des lignes je me servit du fait que je comptais les espaces pour partir du début et avancer directement au bon endroit avec un "fseek(score, 108, SEEK_SET);"


        Merci beaucoup quand même !
        • Partager sur Facebook
        • Partager sur Twitter

        Problème dans un enregistrement de scores.

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown