Probleme avec un exo en c

Résolu
benUmaar Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
benUmaar Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Besoin de votre aide je dois créer un tableau de type Personne et demander les infos de chacun grâce
à une boucle (qui se répète tant qu'il y a des joueurs). et je dois faire un petit tableau de 2 joueurs pour commencer,
ça c'est dans main.c

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

int main(int argc, char *argv[])

{
int i=0;
struct Personne joueur[2];
for (i=1; i<=2; i++)
{
printf("Quel est votre nom joueur ? \n");
scanf("%s", joueur[i].nom);
printf("Votre prenom joueur ? \n");
scanf("%s", joueur[i].prenom);
printf("Quel est votre age joueur ?\n ");
scanf("%d", joueur[i].age);
printf("Vous vous appelez %s %s %d\n", joueur[i].prenom, joueur[i].nom, joueur[i].age);
}
return 0;
}


et le .h
#ifndef PERSONNE_H_INCLUDED
#define PERSONNE_H_INCLUDED
struct Personne
{
char nom[100];
char prenom[100];
char adresse[1000];
int age;
int garcon; // Booléen : 1 = garçon, 0 = fille
};

#endif // PERSONNE_H_INCLUDED


ca compile et j'inserts toutes les infos jusqu'au niveau de age et le programme plante
Merci pour la comprehension

4 réponses

  1. VlkPr3s Messages postés 251 Statut Membre 130
     
    Serais ce dû au fait que tu n'as pas initialisé ta variable age

    int age =0;

    en C# ça arrive très souvent ...
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      int age=0 ?
      Non, ici il s'agit d'une définition de structure.
      0
    2. benUmaar Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
       
      Oui oui c'est une strucuture et cest fait dans le.h.
      0
  2. chris79 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   25
     
    Slt,

    La fonction scanf prend une adresse en second argument.

    #include <stdio.h>
    #include <stdlib.h>
    #include "Personne.h"
    
    #define NB_JOUEUR 2
    
    int main(int argc, char *argv[])
    
    {
        int i=0;
        struct Personne joueur[NB_JOUEUR];
        for (i=1; i<=NB_JOUEUR; i++)
        {
        printf("Quel est votre nom joueur ? \n");
        scanf("%s", joueur[i].nom);
        printf("Votre prenom joueur ? \n");
        scanf("%s", joueur[i].prenom);
        printf("Quel est votre age joueur ?\n ");
        scanf("%d", &joueur[i].age);
        printf("Vous vous appelez %s %s %d\n", joueur[i].prenom, joueur[i].nom, joueur[i].age);
        }
        return 0;
    }
    


    ;)
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Plusieurs problèmes :
    for (i=1; i<=2; i++)
    En C, les tableaux commencent à 0. Il faut donc faire :
    for(i=0;i<2;i++)
    Ou mieux, remplacer 2 par NB (#define NB 2).

    scanf("%d", joueur[i].age);
    Il faut mettre un pointeur. Donc, ce sera :
    scanf("%d", & joueur[i].age);


    Note : je te conseille de mettre des scanf("%99s",...) au lieu des scanf("%s",...) dans ton cas.

    Cdlt,
    0
  4. benUmaar Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci a vous c'est fais ça marche bien maintenant!!!
    0