为什么数据不会保存到结构中?

时间:2014-12-04 12:31:52

标签: c data-structures struct

为什么数据不会保存到结构中?代码的提示部分没问题,但是我无法列出数据结构,它给了我所有项目的空值。     没有错误信息,没有通知,没有。我无法弄清楚它为什么会发生?

#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;
}

1 个答案:

答案 0 :(得分:0)

您没有看到编译器警告吗?

'raktarbekero' : must return a value.

您使用其返回值

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

因此程序无法正常运行。