Demande aide sur les structures

Résolu/Fermé
nizarkhalloufi Messages postés 11 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 9 février 2015 - 6 mars 2014 à 00:13
nizarkhalloufi Messages postés 11 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 9 février 2015 - 6 mars 2014 à 00:56
Salut, je viens de commencer a apprendre le langage c et j'essaie de faire quelques exercices simples sur les structures. j'ai écris ce code avec codeblocks et je sais pas pourquoi ça ne marche pas.
S'il vous plais est ce que quelqu'un peut m'expliquer pourquoi.

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



typedef struct Personne Personne;
struct Personne
{
char nom[100];
char prenom[100];
char adresse[1000];
long age;
int garcon;
};
int main()
{
long i=0, j=0;
Personne utilisateur[4];
for(i=0 ; i<4 ; i++)
{
printf("Quel est votre nom ? ");
scanf("%s", utilisateur[i].nom);
printf("Votre prenom ? ");
scanf("%s", utilisateur[i].prenom);
printf("Votre adresse ? ");
scanf("%s", utilisateur[i].adresse);
printf("Votre age ? ");
scanf("%ld", utilisateur[i].age);
printf("Votre sex ?\n1.garcon\n2.fille\n");
scanf("%d", utilisateur[i].garcon);
while(utilisateur[i].garcon < 1 || utilisateur[i].garcon > 2)
{
printf("resseyez :");
scanf("%d", utilisateur[i].garcon);
}
if(utilisateur[i].garcon == 2)
utilisateur[i].garcon=0;
}
for(j=0 ; j<4 ; j++)
{
if(utilisateur[j].garcon)
printf("L'utilisateur n°%ld est un garcon appele %s %s qui habite a %s et qui a %ld ans d'age\n", j+1,utilisateur[j].prenom, utilisateur[j].nom, utilisateur[j].adresse, utilisateur[j].age);
else
printf("L'utilisateur n°%ld est une fille appelee %s %s qui habite a %s et qui a %ld ans d'age\n", j+1,utilisateur[j].prenom, utilisateur[j].nom, utilisateur[j].adresse,utilisateur[j].age);
}
return 0;
}

1 réponse

Utilisateur anonyme
6 mars 2014 à 00:16
Salut,

Difficile de déterminer d'où vient le problème sans message d'erreur - sans problème.

As-tu essayé d'exécuter ton code en mode pas-à-pas ?
0
nizarkhalloufi Messages postés 11 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 9 février 2015
6 mars 2014 à 00:35
ca ce bloque ici
scanf("%d", utilisateur[i].garcon);
0
Penses à initialiser les valeurs dans tes structures au début du main.

Ensuite, si ça bloque c'est que tu dois entrer un chiffre compris entre 1 et 2 dans la console (Et ceci, 4 fois- Ne pas oublier d'appuyer sur Entrer)

La condition qui suit le while n'est pas logique non plus ... autant modifier la condition du while directement.
0
nizarkhalloufi Messages postés 11 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 9 février 2015
6 mars 2014 à 00:48
ça ne marche pas, j'ai esseyé
0
Ah oui, j'avais pas vu.

Essaies :
scanf("%d", &(utilisateur[i].garcon));

Sur tous les scanf il faut utiliser cette syntaxe (SAUF si la variable est un tableau - donc déjà un pointeur), mais pas les printf.
0
nizarkhalloufi Messages postés 11 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 9 février 2015
6 mars 2014 à 00:56
merci bien, c'est vraiment ca le probleme. merci pour votre aide.
0