Partage
  • Partager sur Facebook
  • Partager sur Twitter

qu'est ce qu'un caractère ?

ouais pas compris

Sujet résolu
    18 février 2006 à 19:45:41

    Alors voilà, la question est dans le titre, parce que en fait, en faisant ce code :
    int main()
    {
            Meilleur_score m_s[2];
            long i;
            FILE* p_sur_fichier = NULL;

            scanf("%s",m_s[0].nom);
            m_s[0].score = 1;
            scanf("%s",m_s[1].nom);
            m_s[1].score = 1;
            for(i = 0; i < 2; i++)
            {
                    printf("%s a %ld pnts\n", m_s[i].nom, m_s[i].score);
            }
            p_sur_fichier = fopen("fich.txt","w");
            if(p_sur_fichier != NULL)
            {
                    for(i = 0; i < 2; i++)
                    {
                    fputc(m_s[i].score, p_sur_fichier);
                    printf(" ");
                    }
            fclose(p_sur_fichier);
            }


    Avec cette structure :
    typedef struct Meilleur_score Meilleur_score;
    struct Meilleur_score
    {
            char nom[50];
            int score;
    };


    Bah l'enregistrement de caractère ne veut pas se faire ... Alors je sais pas trop pourquoi en fait si quelqu'un pouvait m'aider ;) merci
    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2006 à 19:57:11

      "char nom[50]" c'est une chaine de caractères, pas un caractère. Un caractère c'est une lettre. :) (ou un signe comme ,., etc, 'fin j'crois :) )
      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2006 à 20:12:02

        un caractère, c'est par exemple la lettre a, ou même le symbole .
        Il se représente entre apostrophe ' pour le différencier des chaines de caractères, par exemple "ces mots", qui se mettent entre guillemets.
        L'idée, c'est qu'un caractère, c'ets juste un caractère, alors qu'une chaine de caractères, bah, c'et plusieurs caractères (mais cela peut aussi être un seul caractère), qui se termine par le caractère spécial \0.

        Le problème de ton code (à vue d'oeil, il faudrait que je le lise en regardant ce que je lit pour être sur de pas me tromper), c'est que tu considère que ton meilleur score se compose d'un seul caractère, alors qu'avec une des deux autres fonctions que donne m@teo, ça marcherait.
        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2006 à 23:34:56

          Citation : nico


          Le problème de ton code (à vue d'oeil, il faudrait que je le lise en regardant ce que je lit pour être sur de pas me tromper), c'est que tu considère que ton meilleur score se compose d'un seul caractère, alors qu'avec une des deux autres fonctions que donne m@teo, ça marcherait.



          Euh, bah justement, j'ai essayer avec les autres, et ça marche pas :( donc je sais pas comment ça se fait ... :(
          • Partager sur Facebook
          • Partager sur Twitter
            18 février 2006 à 23:44:59

            fprintf(p_sur_fichier, "nom: %s   score: %s pts",m_s[i].nom,m_s[i].score);


            je pense que de cette maniere ca marche, tu essay d'ecrire le valeur d'une variable, et printf est une fonction qui fait ca ! j'espere que tu reussira à faire marcher ton code en faisant cette modification.
            • Partager sur Facebook
            • Partager sur Twitter
              18 février 2006 à 23:50:47

              J'ai essayé, mais ça marche pas ... ça me fait planter mon programme au moment d'enregistrer les données ... dommage en plus ensuite, j'aurais pas pu comparer tu vois parce que ce que je veux faire c'est réussir à enregistrer d'abord les valeurs, mais ensutie, remplacer si par exemple quelqu'un à eu un meilleur scores tu vois ? donc ça marche pas merci comme même ;)

              Edit : en fait, si comme ça ça marche, en effet, c'est juste que tu t'étais trompé dans ton petit bout de code :p t'avais mis %s pour le score :p mais c'est pas bien grave, bon, je sais comment je vais faire maintenant alors merci ;)
              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2006 à 1:12:20

                #include <stdio.h>
                #include <stdlib.h>

                typedef struct Meilleur_score
                {
                  char nom[50];
                  int score;
                }Meilleur_score;

                int main()
                {
                  Meilleur_score m_s[2];
                  long i;

                  FILE* fichier = NULL;
                 
                  printf("Nom Joueur 1 : ");
                  scanf("%s",m_s[0].nom);
                  m_s[0].score = 1;

                  printf("\nNom Joueur 2 : ");
                  scanf("%s",m_s[1].nom);
                  m_s[1].score = 2;
                 
                  for(i = 0; i < 2; i++)
                    {
                      printf("%s a %ld pnts\n", m_s[i].nom, m_s[i].score);
                    }
                 
                  fichier = fopen("fich.txt","w");
                  if(fichier != NULL)
                    {
                      for(i = 0; i < 2; i++)
                        fprintf(fichier, "nom: %s   score: %d pts\n",m_s[i].nom,m_s[i].score);
                      fclose(fichier);
                    }
                }


                Et voilà ;)
                score est un int donc %d et pas %s ;)
                • Partager sur Facebook
                • Partager sur Twitter

                qu'est ce qu'un caractère ?

                × 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