Probleme avec un exo en c

Résolu/Fermé
benUmaar Messages postés 6 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 10 mai 2015 - 29 avril 2015 à 13:46
benUmaar Messages postés 6 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 10 mai 2015 - 30 avril 2015 à 01:50
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
A voir également:

4 réponses

VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
29 avril 2015 à 14:25
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
30 avril 2015 à 00:31
int age=0 ?
Non, ici il s'agit d'une définition de structure.
0
benUmaar Messages postés 6 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 10 mai 2015
30 avril 2015 à 01:29
Oui oui c'est une strucuture et cest fait dans le.h.
0
chris79 Messages postés 97 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 25
30 avril 2015 à 00:08
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
30 avril 2015 à 00:27
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
benUmaar Messages postés 6 Date d'inscription lundi 16 mars 2015 Statut Membre Dernière intervention 10 mai 2015
30 avril 2015 à 01:50
Merci a vous c'est fais ça marche bien maintenant!!!
0