Aide avec structure de donne

Don 1 -  
kij_82 Messages postés 4260 Statut Contributeur -
Bonjour, tout le monde
mon programme se plante just apres que jai renre lage de lutilisateur 1 et ne me donne pas loportunite dentree les infos de lutilisateur 2.
pouriez vous me donner un coup de main
et me donner une fontion assez courte pour afficher les infos saisie de chaque utilisateur

meric davance

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

int main()
{
int i;
typedef struct Personne Personne;
struct Personne
{
char nom[100];
char prenom[100];

int age;
};

Personne utilisateur[3];

for ( i = 1 ; i < 3 ; i++)
{
printf("\nEntres les informations de la personne %d", i);
printf("\nQuel est le nom de la personne %d ? ", i);
scanf("%s", utilisateur[i].nom);
printf("\nLe prenom de la personne %d ? ", i);
scanf("%s", utilisateur[i].prenom);
printf("\nL'age de la personne %d ?", i);
scanf("%d", utilisateur[i].age);
}

}

1 réponse

kij_82 Messages postés 4260 Statut Contributeur 857
 
Bonjour,

Un tableau commence toujours à l'indice 0 et non 1.
Donc si tu veux remplir ton tableau avec l'indice de parcours de ta boucle, il va te falloir débuter ta boucle à 0.

Et si tu ne souhaite que 2 joueurs, alors la taille de ton tableau sera de 2 et non 3.

Ensuite, puisqu'il s'agit d'un tableau d'objet de type Personne, alors il faut initialiser un objet Personne pour chaque case du tableau pour y mettre les informations:

Personne utilisateur[2];

for (int i = 0 ; i < 2 ; i++)
{
// --- Allocation mémoire d'un objet de type Personne dans une case du tableau
// --- Se renseigner sur la bonne syntaxe, je ne sais plus comment c'est exactement
// --- depuis le temps.
utilisateur[i] = malloc (Personne*);

printf("\nEntres les informations de la personne %d", i);
printf("\nQuel est le nom de la personne %d ? ", i);
scanf("%s", utilisateur[i].nom);
printf("\nLe prenom de la personne %d ? ", i);
scanf("%s", utilisateur[i].prenom);
printf("\nL'age de la personne %d ?", i);
scanf("%d", utilisateur[i].age);
} 


Pour ce qui est de demander deux fois (pour joueur 1 puis 2), ça ne devrais pas poser de souci.
0