Problème avec ce programme

Résolu/Fermé
nazgulou Messages postés 6 Date d'inscription dimanche 24 août 2014 Statut Membre Dernière intervention 24 août 2014 - 24 août 2014 à 20:17
nazgulou Messages postés 6 Date d'inscription dimanche 24 août 2014 Statut Membre Dernière intervention 24 août 2014 - 24 août 2014 à 21:27
Salut , j'ai un problème avec ce programme :


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


int main()
{
    int i=0;
    int nombreJoueur = 2;

    Perso humain[2];



    for(i=1;i<=nombreJoueur;i++)
    {
        printf("Nom du joueur %d\n", i);
        scanf("%s", humain[i].nom);

        printf("Prenom du joueur %d\n", i);
        scanf("%s", humain[i].prenom);

        printf("Age du joueur %d\n", i);
        scanf("%d",humain[i].age);

        printf("Adresse du joueur  %d\n", i);
        scanf("%s",humain[i].adresse);

    }



    return 0;
}





Le problème est au moment ou le programme demande l'age, lors du deuxième tour de la boucle ce doit être l'age du joueur 2 qui est demandé mais il y a écrit : Age du joueur 110.
Pareil pour l'adresse ensuite.
Si quelqu'un peut m'aider , s'il vous plait.

Ps: Je suis un débutant.

1 réponse

Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 1 121
Modifié par Franck7511 le 24/08/2014 à 20:32
Salut,

Les indices des tableaux commencent à 0. Là tu commences à 1, d'où une erreur.
for(i=1;i<=nombreJoueur;i++)
A remplacer par :
for(i=0;i<nombreJoueur;i++)
(en remplaçant i par i+1 à certains endroits)
Dans
scanf("%d",humain[i].age);
je suppose qu'il faudrait mettre :
scanf("%d",&(humain[i].age));

La fonction scanf prend des pointeurs, pour demander l'âge tu fais :
int age;
scanf("%d", &age);

Il faudrait aussi écrire :
Perso humain[nombreJoueur];

à la place de :
Perso humain[2];
Si tu veux qu'il y ait autant d'humains que de joueurs.
0
nazgulou Messages postés 6 Date d'inscription dimanche 24 août 2014 Statut Membre Dernière intervention 24 août 2014
24 août 2014 à 20:37
T'as solution a l'air de fonctionner, Merci ! Mais je ne comprend pas trop le coup du &(humain[i].age).
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
24 août 2014 à 21:20
@Franck7511
Il faudrait aussi écrire :

Perso humain[nombreJoueur];

Non. Ce n'est pas autorisé en C ISO 89/90. Il faudrait plutôt faire un #define. ou alors faire une allocation dynamique (malloc()).

@nazgulou,
humain[i].age est de type int. Dans ton scanf(), il faut envoyer l'adresse de la variable. Pour obtenir l'adresse d'une variable (hors pointeur et tableau), il suffit de mettre & devant. Par exemple : &(humain[i].age)
0
nazgulou Messages postés 6 Date d'inscription dimanche 24 août 2014 Statut Membre Dernière intervention 24 août 2014
24 août 2014 à 21:27
D'accord , merci!
0