2014-12-04 96 views
-4

爲什麼不將數據保存到結構中?代碼的提示部分是確定的,但是我不能列出數據結構,它給了我所有項目的空值。 沒有錯誤信息,沒有通知,沒有。我無法弄清楚爲什麼會發生?爲什麼不將數據保存到結構中?

#include <stdio.h> 
#define MAX_KARAKTER 40 
#define MAX_ARUK 30 
#define MAX_PARTNEREK 30 
#define MAX_SZAMLAK 100 
#define MAX_TETELEK 30 


struct tetel_adat { 
    int vonalkod; 
    int mennyiseg; 
}; 

struct tetel_adat tetelbekeres() { 
    struct tetel_adat tetel; 
    printf("  Vonalkod: "); 
     scanf("%d", &tetel.vonalkod); 
    printf("  Mennyiseg: "); 
     scanf("%d", &tetel.mennyiseg); 
    return tetel; 
}; 

struct tetelek { 
    struct tetel_adat tetel[MAX_TETELEK]; 
}; 

struct tetelek tetelekbekeres(int maxtetel) { 
    int i; struct tetelek lmk; 
    for(i=0;i<maxtetel; i++) { 
     printf(" %d. tetel adatait kerem:\n", i+1); 
     lmk.tetel[i] = tetelbekeres(); 
    } 
    return lmk; 
}; 




struct szamla_adat { 
    int szamlaszam; int partnerkod; 
    int datum; int tetelekszama; 
    struct tetelek tetelek; 
}; 

struct szamla_adat szamlabekeres() { 
    struct szamla_adat szl; 
    printf(" Szamlaszam (int): "); 
     scanf("%d", &szl.szamlaszam); 
    printf(" Partnerkod (int): "); 
     scanf("%d", &szl.partnerkod); 
    printf(" Datum (timestamp): "); 
     scanf("%d", &szl.datum); 

    do { 
     printf(" Tetelek szama: "); 
     scanf("%d", &szl.tetelekszama); 
    } while (szl.tetelekszama<0 || szl.tetelekszama>MAX_TETELEK); 
    szl.tetelek=tetelekbekeres(szl.tetelekszama); 
    return szl; 
}; 

struct szamlak { 
    struct szamla_adat szamla[MAX_SZAMLAK]; 
}; 

struct szamlak szamlakbekerese(int maxdb) { 
    int i; struct szamlak lsz; 
    for(i=0;i<maxdb; i++) { 
     printf("%d. szamla adatait kerem:\n", i+1); 
     lsz.szamla[i]=szamlabekeres(); 
    } 
    return lsz; 
}; 






struct partner { 
    int partnerkod; char nev[MAX_KARAKTER]; 
    char cim[MAX_KARAKTER]; int telefonszam; 
}; 


struct partner partnerbekeres() { 
    struct partner pr; 
    printf(" Partnerkodja (int): "); 
     scanf("%d", &pr.partnerkod); 
    printf(" Neve (max 40 karakter): "); 
     scanf("%s", pr.nev); 
    printf(" Cime (max 40 karakter): "); 
     scanf("%s", pr.cim); 
    printf(" Telefonszama (csak szam): "); 
     scanf("%d", &pr.telefonszam); 
    return pr; 
}; 

struct partnerek { 
    struct partner partner[MAX_PARTNEREK]; 
}; 

struct partnerek partnerekbekerese(int maxdb) { 
    int i; struct partnerek lp; 
    for(i=0;i<maxdb;i++) { 
     printf("%d. partner adatait kerem:\n", i+1); 
     lp.partner[i]=partnerbekeres(); 
    } 
    return lp; 
}; 





struct aru { 
    int vonalkod; char leiras[MAX_KARAKTER]; 
    int ar; int keszlet; 
}; 

struct aru arubekeres() { 
    struct aru la; 
    printf(" Vonalkodja (int): "); 
     scanf("%d", &la.vonalkod); 
    printf(" Leirasa (max 40 karakter): "); 
     scanf("%s", la.leiras); 
    printf(" Ara (Ft): "); 
     scanf("%d", &la.ar); 
    printf(" Keszlet (db): "); 
     scanf("%d", &la.keszlet); 
    printf("\n"); 
    return la; 
}; 

struct aruk { 

    struct aru aru[MAX_ARUK]; 
}; 

struct aruk arukbekeres(int maxdb) { 
    int i;struct aruk lak; 
    for(i=0;i<maxdb;i++) { 
     printf("%d. aru:\n", i+1); 
     lak.aru[i]=arubekeres(); 
    } 
    return lak; 
}; 



struct raktar { 
    int max_aru; int max_partner; 
    int max_szamla; 
    struct aruk aruk; 
    struct partnerek partnerek; 
    struct szamlak szamlak; 
}; 

struct raktar raktarbekero() { 
    struct raktar raktar; 
    int j=0; 
    do { 
     if(j) printf("A szamnak 0 es %d koze kell esnie!\n", MAX_ARUK); 
     printf("Hany arut szeretnenk feltolteni? "); 
      scanf("%d", &raktar.max_aru); j++; 
    } while(raktar.max_aru<0 || raktar.max_aru>MAX_ARUK); 
    raktar.aruk=arukbekeres(raktar.max_aru); 
    j=0; 
    do { 
     if(j) printf("A szamnak 0 es %d koze kell esnie!\n", MAX_PARTNEREK); 
     printf("\nHany partnert szeretnenk feltolteni? "); 
      scanf("%d", &raktar.max_partner); j++; 
    } while(raktar.max_partner<0 || raktar.max_partner>MAX_PARTNEREK); 
    raktar.partnerek=partnerekbekerese(raktar.max_partner); 
    j=0; 
    do { 
     if(j) printf("A szamnak 0 es %d koze kell esnie\n", MAX_SZAMLAK); 
     printf("\nHany szamlat szeretnenk feltolteni? "); 
      scanf("%d", &raktar.max_szamla); j++; 
    } while(raktar.max_szamla<0 || raktar.max_szamla>MAX_SZAMLAK); 
    raktar.szamlak=szamlakbekerese(raktar.max_szamla); 
}; 


/* PROGRAM KILISTAZO RESZE */ 

void tetelkiiratas(struct tetel_adat tetel) { 
    printf("\t Vonalkod: %d\n", tetel.vonalkod); 
    printf("\n Mennyiseg: %d\n", tetel.mennyiseg); 
} 

void tetelekkiiratas(struct tetelek tetelek, int maxdb) { 
    int i; for(i=0;i<maxdb;i++) tetelkiiratas(tetelek.tetel[i]); 
} 

void szamlakiiratas(struct szamla_adat szamla) { 
    printf("%d. szamu szamla adatai:\n", szamla.szamlaszam); 
    printf(" Partnerkod: %d\n", szamla.partnerkod); 
    printf(" Datum: %d\n", szamla.datum); 
    printf(" Tetelek:\n"); 
     tetelekkiiratas(szamla.tetelek, szamla.tetelekszama); 
} 

void szamlakkiiratas(struct szamlak szamlak, int maxdb) { 
    int i; for(i=0;i<maxdb; i++) szamlakiiratas(szamlak.szamla[i]); 
} 

void partnerkiiratas(struct partner partner) { 
    printf("%d. kodu partner adatai:\n", partner.partnerkod); 
    printf(" Neve: %s\n", partner.nev); 
    printf(" Cime: %s\n", partner.cim); 
    printf(" Telefonszama: %d\n", partner.telefonszam); 
} 

void partnerekkiiratas(struct partnerek partnerek, int maxdb) { 
    int i; for(i=0;i<maxdb;i++) partnerkiiratas(partnerek.partner[i]); 
} 

void arukiiratas(struct aru aru) { 
    printf("%d kodu aru adatai:\n", aru.vonalkod); 
    printf(" Leirasa: %s\n", aru.leiras); 
    printf(" Ara: %d,-\n", aru.ar); 
    printf(" Keszlet: %d (db)\n", aru.keszlet); 
} 

void arukkiiratas(struct aruk aruk, int maxdb) { 
    int i; for(i=0;i<maxdb;i++) arukiiratas(aruk.aru[i]); 
} 

void raktarkiiro(struct raktar raktar) { 
    printf("\nARUK KILISTAZASA (%d): \n", raktar.max_aru); 
     arukkiiratas(raktar.aruk, raktar.max_aru); 
    printf("\nPARTNEREK KILISTAZASA: \n"); 
     partnerekkiiratas(raktar.partnerek, raktar.max_partner); 
    printf("\nSZAMLAK KILISTAZASA: \n"); 
     szamlakkiiratas(raktar.szamlak, raktar.max_szamla); 

} 

/* --------------------------------------------------- */ 


int main() { 
    struct raktar raktar; 
    raktar = raktarbekero(); 
    raktarkiiro(raktar); 
    return 0; 
} 
+0

歡迎來到SO。請檢查以下方法:http://sscce.org/ – m0skit0 2014-12-04 12:33:29

+1

請提供[MCVE](http://stackoverflow.com/help/mcve) – 2014-12-04 12:34:12

+0

TL; DR .......... .......... – BLUEPIXY 2014-12-04 12:39:15

回答

0

您沒有看到編譯器警告嗎?

'raktarbekero' : must return a value. 

您可以使用它的返回值

int main() { 
    struct raktar raktar; 
    raktar = raktarbekero(); 
    raktarkiiro(raktar); 
    return 0; 
} 

所以該程序是不會正常工作。

+0

是的,謝謝,我沒有注意到 – bbenhu 2014-12-04 13:43:57

相關問題