Problème avec ce programme
Résolu
nazgulou
Messages postés
6
Statut
Membre
-
nazgulou Messages postés 6 Statut Membre -
nazgulou Messages postés 6 Statut Membre -
Salut , j'ai un problème avec ce programme :
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.
#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.
A voir également:
- Problème avec ce programme
- Programme demarrage windows - Guide
- Programme word gratuit - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
1 réponse
Salut,
Les indices des tableaux commencent à 0. Là tu commences à 1, d'où une erreur.
Dans
La fonction scanf prend des pointeurs, pour demander l'âge tu fais :
Il faudrait aussi écrire :
à la place de :
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.
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)