Scanf d'une structure imbriqée

Résolu
Echap_Ax -  
sesamizo Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai rencontré beaucoup des problèmes avec les structures
je voudrai vous demander comment faire un appel d'une structure dans une autre pour
comment appliqué scanf pour remplir un tableau de structure se type de programme
merci a vous tous
voila mon code:
#include<stdio.h>
#include<conio.h>
#define const max;
typedef struct horaire{ 
        int h;
        int mn;
        int s;
        }horaires;
      
typedef  struct bus 
           { 
             int num;
             char nom;
             char dep;
             char arr;
             struct horaires ; 
             }BUS;
main()
{ 
      
int max=0;      
int i,x;
struct bus t[max];
for(i=0;i<10;i++)
{ 
                 printf("donner le numéro de bus\n");
                 scanf("%d",&t[i].num);
                 printf("donner l'heure de départ\n");
                 scanf("%d",&t[i].horaires.h);
                 printf("donner minute de départ\n");
                 scanf("%d",t[i].horaires.mn);
                 printf("donner seconde de départ\n");
                 scanf("%d",t[i].horaires.s);
                 printf("l'heure d'arrivée\n");
                 scanf("%d",&t[i].horaires.h);
                 printf("minute d'arrivée\n");
                 scanf("%d",&t[i].horaires.mn);
                 printf("seconde d'arrivée\n");
                 scanf("%d",&t[i].horaires.s);
                
                 }
                 
{  
                 printf("donner le numero de bus\n");
                 scanf("%d",&x);
                 
                 while(t[i].num != x)

je suis sous winvista sp1/ compilateur devc++
merci a vous tous

3 réponses

mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
oui...
il te faudrait faire des variables h,mn,s depart et arrivee ou alors une structure horraire arrivee et une autre horraire depart
0
sesamizo Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   2
 
Bien sûr que oui.
Voila une petite rectification :
#include<stdio.h>
#include<conio.h>
typedef struct{
int h;
int mn;
int s;
}horaires;

typedef struct{
int num;
horaires hor_depart; // horaires de depart
horaires hor_arr; // et d'arrivée
}BUS;
main()
{

int i,x;
BUS t[10];
for(i=0;i<10;i++)
{
printf("donner le numéro de bus\n");
scanf("%d",&t[i].num);
//Depart
printf("donner l'heure de départ\n");
scanf("%d",&t[i].hor_depart.h);
printf("donner minute de départ\n");
scanf("%d",&t[i].hor_depart.mn);
printf("donner seconde de départ\n");
scanf("%d",&t[i].hor_depart.s);

//Arrivee
printf("l'heure d'arrivée\n");
scanf("%d",&t[i].hor_arr.h);
printf("minute d'arrivée\n");
scanf("%d",&t[i].hor_arr.mn);
printf("seconde d'arrivée\n");
scanf("%d",&t[i].hor_arr.s);

}
}
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
si tu utilises des typedef, dans ta deuxieme structure il te suffit de faire sa
typedef  struct bus 
           { 
             int num;
             char nom;
             char dep;
             char arr;
             horaires horr; 
             }BUS;
pareil quand tu definis ton tableau de struct tu peux utiliser directement le nouveau type
BUS t[MAX];
ton define aussi n'est pas correcte c'est plutot
#define MAX 10

apres pour utilisé tes scanf par exemple
 scanf("%d",&t[i].horr.h);
-1
Echap_Ax
 
merci beaucoup une bonne réponse et très claire,mais j'ai u tout petit problème avec la structure horaires est ce que l'enregistrement correcte avec cette lecture "c'est a dire l'horaire d'arrivée en h,mn,s écrase l'horaire de départ" ?
for(i=0;i<max;i++)
{
printf("donner le numéro de bus\n");
scanf("%d",&t[i].num);
printf("donner l'heure de départ\n");
scanf("%d",&t[i].horaires.h);
printf("donner minute de départ\n");
scanf("%d",t[i].horaires.mn);
printf("donner seconde de départ\n");
scanf("%d",t[i].horaires.s);
printf("l'heure d'arrivée\n");
scanf("%d",&t[i].horaires.h);
printf("minute d'arrivée\n");
scanf("%d",&t[i].horaires.mn);
printf("seconde d'arrivée\n");
scanf("%d",&t[i].horaires.s);
}
0