Как инициализировать структуру, содержащую другую структуру? - PullRequest
0 голосов
/ 18 марта 2020

Я новичок и пытаюсь создать структуру кода на C коде. Я не понимаю, как я могу инициализировать структуру структуры. Someneone помочь мне? У меня есть:

#define SIZEHOSP 200
#define DIM 200
#define SIZESICK 2000



typedef struct SICKREGION {
    char firstName[20];
    char lastName[20];
    char fiscalCode[16];
    enum stateSick;
    diagnosisDate data;
    healingDate dataH;
};

typedef struct HOSPITAL {
    char nameHospital[30];
    int codeHospital;
    char addressHospital[40];
    char departmentManager[30];
    int beds;
    int bedsIntensiveCare;
};

HOSPITAL hospital[SIZEHOSP];

typedef struct REGION {
    char nameRegion[20];
    int codeRegion;
    char MainTownRegion[15];
    char namePresidentRegion[20];
    int numberHospital;
    int numberSickRegion;
    HOSPITAL hospital[SIZEHOSP];
    SICKREGION sickregion[SIZESICK];
};

REGION region[DIM] = {
    {"Sicilia", 0004, "Palermo", "Musumeci", 40, 150},
    {"sardegna", 4444, "cagliari", "pippo", 200, 50},
    {"calabria", 0000, "reggio", "Josh", 12, 18}
};

например, я инициализировал 3 типа REGION. но они неполные, потому что я не знаю, как вставить значение структуры HOSPITAL и SICKREGION в регион [DIM]. Какой синтаксис? Надеюсь, он хорошо объяснил проблему.

1 Ответ

0 голосов
/ 18 марта 2020

Как инициализировать структуру, содержащую другую структуру?

Существует несколько способов инициализации структуры. Для упрощения в следующем примере используются меньшие структуры, чем те, которые вы предоставили ...

Ниже приведена иллюстрация инициализации с инициализацией со значениями (= {,,,{,,}};), а затем с нулями = {0}:

typedef struct {
    int count;
    float cash;
    char item[50];
}Purchase;

typedef struct {
    int accnt;
    char acct_name[50];
    Purchase purch;
} Acct;

Acct acct = {100123, "Robert Baily", {15, 12.50, "Tires"}};
//Or, using member names to self document the initialization statement as suggested in comments:
Acct acct1 = Acct acct = {.accnt=100123, .acct_name="Robert Baily", {.count=15, .cash=12.50, .item="Tires"}};

Acct acct2 = {0};

int main(void)
{
    printf("acct = %d\nAcct_name = %s\nitem = %s\ncount = %d\ncash = %3.2f\n", acct.accnt, acct.acct_name, acct.purch.item, acct.purch.count, acct.purch.cash);
    printf("acct2 = %d\nAcct_name = %s\nitem = %s\ncount = %d\ncash = %3.2f\n", acct2.accnt, acct2.acct_name, acct2.purch.item, acct2.purch.count, acct2.purch.cash);
    return 0;
}   

Хотя они маленькие, они иллюстрируют, что вы делаете с вашими более крупными и сложными структурами. Я полагаю, что для ваших структур это будет чрезвычайно утомительно, и, вероятно, нет необходимости использовать первый метод, поскольку использование struct в реальном программировании обычно начинается с обнуления. т.е. {0}

...