Ошибка инициализации массива элемента структуры - PullRequest
0 голосов
/ 19 декабря 2018

Добрый день, для школьного проекта я должен ввести и показать минуты упражнения для 30 дней (1 месяца) клиента, клиент - это структура, которая содержит массив дней, когда я инициализирую свою программу, которую я инициализируюМой вектор клиентов использует:

//Struct
typedef struct{
char name[100];
int dayOfBirth;
int monthOfBirth;
int yearOfBirth;
char address[100];
int phone;
int iRSNumber;
float height;
float weight;
int exerMinutes[30];

}client;

client clients[100] = {};


//initialize struct of clients
for(int i=0; i<100; i++){
    strcpy(clients[i].name, "NULL");
    strcpy(clients[i].address, "NULL");
    clients[i].height = 0.0;
    clients[i].yearOfBirth = 0;
    clients[i].monthOfBirth = 0;
    clients[i].dayOfBirth = 0;
    clients[i].iRSNumber = 0;
    clients[i].weight = 0.0;
    clients[i].phone = 0;
    for(int j = 0; j<30; j++){
        clients[i].exerMinutes[j] = 0;
    }
}

Код для отображения отчета:

system("cls");
printf("\nSHOW MONTHLY REPORT\n");
for(int i=0;i<30;i++){
    if((i+1)%2==0 && i!=0){
        printf("day %2d: %3d min\n", i+1, Client->exerMinutes[i]);
    }else{
        printf("day %2d: %3d min\t\t", i+1, Client->exerMinutes[i]);
    }
}

printf("\n\nPress Enter to continue");
system("pause >nul /nobreak");

Однако цикл для () инициализации массива месяца, похоже, не работает, потому что когдая прошу отчет за месяц, это вывод:

day  1: 100 min         day  2:   0 min
day  3:   0 min         day  4:   0 min
day  5:   0 min         day  6:   0 min
day  7:   0 min         day  8:   0 min
day  9:   0 min         day 10:   0 min
day 11:   0 min         day 12:   0 min
day 13:   0 min         day 14:   0 min
day 15:   0 min         day 16:   0 min
day 17:   0 min         day 18:   0 min
day 19:   0 min         day 20:   0 min
day 21:   0 min         day 22:   0 min
day 23:   0 min         day 24:   0 min
day 25:  10 min         day 26:   3 min
day 27: 1999 min                day 28: 1280070990 min
day 29:   0 min         day 30:   0 min

Буду благодарен за любую помощь и / или совет.

1 Ответ

0 голосов
/ 19 декабря 2018

Код работает отлично, то есть все переменные в 'struct' инициализируются нулями или какими-либо другими значениями.Я попробовал это с несколькими изменениями.

Проблема с этими строками:

if((i+1)%2==0    &&    i!=0){
        printf("day    %2d:    %3d    min\n",    i+1,    Client->exerMinutes[i]);
}else{
        printf("day    %2d:    %3d    min\t\t",    i+1,    Client->exerMinutes[i]);
}

Вы использовали указатель на структуру "Клиент", но она не инициализирована, и поэтому выполучать неожиданные результаты.Имейте в виду, что в этом «Клиенте» вы использовали заглавную букву «C».Надеюсь, это поможет:)

...