#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NEVHOSSZ 51
#define RENDSZAMHOSSZ 8 //a "-" jel miatt 8
struct utvonal_sofor{
char vez_nev[NEVHOSSZ];
char ker_nev[NEVHOSSZ];
};
struct utvonal_jarmu{
char tipus[NEVHOSSZ];
char rendszam[RENDSZAMHOSSZ];
};
struct indulo_allomas{
char telepules[NEVHOSSZ];
char kozterulet[NEVHOSSZ];
char hazszam[NEVHOSSZ];
};
struct cel_allomas{
char telepules[NEVHOSSZ];
char kozterulet[NEVHOSSZ];
char hazszam[NEVHOSSZ];
};
struct utvonal_allomas{
struct indulo_allomas indulo;
struct cel_allomas cel;
};
struct utvonalengedely{
struct utvonal_sofor sofor;
struct utvonal_jarmu jarmu;
struct utvonal_allomas allomas;
};
void readline(char* buf, int len) {
while(1)
{
int got;
int c;
char* res
= fgets(buf
, len
, stdin
); if (res == NULL) {
}
/* fgets beteszi a sorveget, vagjuk le ha megvan */
if (res[got - 1] == '\n') {
res[got - 1] = 0;
return;
}
if (c == EOF) {
}
if (c == '\n') {
/* a pufferben a teljes sor elfert csak a sorveg maradt le, kesz vagyunk */
return;
}
printf("Tul hosszu! Maximum %d betut irjon be!\n", len
- 1); /* olvassuk be a pufferbol a sor maradekat */
do {
} while (c != EOF && c != '\n');
}
}
struct utvonal_sofor Beker_Sofor(){
struct utvonal_sofor l_nev;
readline(l_nev.vez_nev, NEVHOSSZ);
readline(l_nev.ker_nev, NEVHOSSZ);
return l_nev;
}
struct utvonal_jarmu Beker_Jarmu(){
struct utvonal_jarmu l_jarmu;
printf("a Gepkocsi tipusa:\n"); readline(l_jarmu.tipus, NEVHOSSZ);
readline(l_jarmu.rendszam, RENDSZAMHOSSZ);
return l_jarmu;
}
struct indulo_allomas Beker_Indulo(){
struct indulo_allomas l_indulo;
readline(l_indulo.telepules, NEVHOSSZ);
readline(l_indulo.kozterulet, NEVHOSSZ);
readline(l_indulo.hazszam, NEVHOSSZ);
return l_indulo;
}
struct cel_allomas Beker_Cel(){
struct cel_allomas l_cel;
readline(l_cel.telepules, NEVHOSSZ);
readline(l_cel.kozterulet, NEVHOSSZ);
readline(l_cel.hazszam, NEVHOSSZ);
return l_cel;
}
struct utvonal_allomas Beker_Allomas(){
struct utvonal_allomas l_allomas;
l_allomas.indulo = Beker_Indulo();
l_allomas.cel = Beker_Cel();
return l_allomas;
}
struct utvonalengedely Beker_utvonalengedely(){
struct utvonalengedely l_utvonalengedely;
printf("Kerem a sofor nevet:\n"); l_utvonalengedely.sofor = Beker_Sofor();
printf("Kerem a gepjarmu adatait:\n"); l_utvonalengedely.jarmu = Beker_Jarmu();
printf("Kerem az allomasadatokat:\n"); l_utvonalengedely.allomas = Beker_Allomas();
return l_utvonalengedely;
}
void Kiir_Sofor(struct utvonal_sofor p_nev){
printf("%s %s\n\n", p_nev.
vez_nev, p_nev.
ker_nev); }
void Kiir_Jarmu(struct utvonal_jarmu p_jarmu){
printf("%s %s\n\n", p_jarmu.
tipus, p_jarmu.
rendszam); }
void Kiir_Indulo(struct indulo_allomas p_indulo){
printf("%s, %s %s.\n\n", p_indulo.
telepules, p_indulo.
kozterulet, p_indulo.
hazszam); }
void Kiir_Cel(struct cel_allomas p_cel){
printf("%s, %s %s.\n\n", p_cel.
telepules, p_cel.
kozterulet, p_cel.
hazszam); }
void Kiir_Allomas(struct utvonal_allomas p_allomas){
Kiir_Indulo(p_allomas.indulo);
Kiir_Cel(p_allomas.cel);
}
void Kiir_Utvonalengedely(struct utvonalengedely p_utvonalengedely){
printf("\nAz utvonalengedely a kovetkezo:\n\n"); Kiir_Sofor(p_utvonalengedely.sofor);
Kiir_Jarmu(p_utvonalengedely.jarmu);
Kiir_Allomas(p_utvonalengedely.allomas);
}
int main(){
struct utvonalengedely u;
u=Beker_utvonalengedely();
Kiir_Utvonalengedely(u);
return 0;
}