Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plantage

Sujet résolu
    11 mars 2006 à 22:43:48

    J'ai un problème dans la lecture de mon programme :
    j'ai essayé de faire l'exercice proposé dans le chapitre sur la création de variables mais pendant la lecture du programme, il plante tout le temps.

    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"
    #define JOUEURS 2

    int main(int argc‚ char *argv[])
    {
        Personne joueurs[JOUEURS];

        for(int i = 0; i < JOUEURS; i++)
        {
                printf("Joueur %ld : \n"‚ i+1);
                printf("Quel est ton nom : ");
                scanf("%s"‚ joueurs[i].nom);
                printf("Quel est ton prenom : ");
                scanf("%s"‚ joueurs[i].prenom);
                printf("Quel est ton age : ");
                scanf("%ld"‚ joueurs[i].age);
         }

         for(int j = 0; j < JOUEURS; j++)
         {
                 if (j != 0)
                       printf("...\n");
                 printf("Bonjour joueur %ld : %s %s !!!\n"‚ j+1‚ joueurs[j].nom‚ joueurs[j].prenom);
                 printf("Tu as %ld ans\n"‚ joueurs[j].age);
         }

      system("PAUSE");
      return 0;
    }


    L'age n'est jamais affiché : il me mette toujours le même nombre.
    • Partager sur Facebook
    • Partager sur Twitter
      11 mars 2006 à 22:58:19

      Citation : Pico



                  scanf("%ld"‚ joueurs[i].age);


      L'age n'est jamais affiché : il me mette toujours le même nombre.


      "%ld" avec scanf() attend l'adresse d'un long et non un long (je suppose que joueur.age est un long). Le comportement est indéfini. Il manque un &.

                  scanf("%ld"‚ &joueurs[i].age);

      Malgré les apparences, les fonctions *scanf() sont d'un usage difficile et de toutes façons inadaptées à une saisie 'humaine' (par essence non formatée, on est pas des robots...). Je ne recommande pas leur usage. Il existe des alternatives.

      http://mapage.noos.fr/emdel/notes.htm#saisie
      http://mapage.noos.fr/emdel/notes.htm#fichiers

      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        11 mars 2006 à 23:16:20

        J'ai changé ce que tu m'as dit de changer mais quand je compile j'ai le message d'erreur :

        18 main.c
        parse error before character 0202
        • Partager sur Facebook
        • Partager sur Twitter
          11 mars 2006 à 23:20:18

          fais voir ta struct Personne
          • Partager sur Facebook
          • Partager sur Twitter
            12 mars 2006 à 11:41:47

            Citation : Pico

            J'ai changé ce que tu m'as dit de changer mais quand je compile j'ai le message d'erreur :

            18 main.c
            parse error before character 0202

            C'est le problème apparament connu de ce forum qui transforme les ',' en '\202' (130 décimal)
            (ou "stray '130'"). Remplace la virgule que tu vois par une virgule que tu tapes et ça va fonctionner.
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              12 mars 2006 à 14:26:31

              J'ai supprimé une partie du programme et j'ai ensuite réécrit exactement la même chose et ça à marché !!!
              Je ne sais pas d'où ça venait !!
              • Partager sur Facebook
              • Partager sur Twitter
                12 mars 2006 à 17:18:21

                Ben apparemment de la virgule, comme dit plus haut.
                • Partager sur Facebook
                • Partager sur Twitter

                Plantage

                × 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