2017-04-26 24 views
2

我想創建一個結構並在InitiateA中初始化它們並在DisplayA中打印並在Main中調用它們。我試圖去做,但似乎沒有任何工作?如何初始化結構和調用函數以顯示在主

#include <string.h> 

struct Penalty{ 
    // Provide structure definition for Penalty here 
    double fine; 
    char Identity[20]; 
    int i; 
}; 

void InitiateA (struct Penalty data[]); 
void DisplayA (struct Penalty data[]); 

int main(){ 

    struct Penalty rule[3]; 
    struct i; 

    DisplayA(rule); 

    rule[0].fine = 20.00; 
    strcpy(rule[0].Identity, "Student"); 

    rule[1].fine = 30.00; 
    strcpy(rule[1].Identity , "Staff"); 

    rule[2].fine = 50.00; 
    strcpy(rule[2].Identity , "Vendor"); 

    for(i=0;i<3;i++) { 
    printf("%d%s",rule[i].fine,rule[i].Identity); 
    } 

    return 0; 
} 

我不知道如何給這個函數調用的主要功能

void InitiateA (struct Penalty data[]){ 
    //intialize data here. 
    printf("identity\n"); 
    printf("%d",rule[i].Identity); 
    return; 
} 

void DisplayA (struct Penalty data[]){ 
    //display data here 
    printf("Fine : RM %d\n", data[i].fine); 
    return; 
} 

去做了錯誤?

+0

不要在void函數內寫入return語句。 – Lundin

回答

0

這是一個錯誤,在InitiateA()

printf("%d",rule[i].Identity); 

你的意思

printf("%d", data[i].Identity); 

您不能引用變量rule,它不是在這一點上範圍(這是在main()本地)。

你需要調用它像這樣,從main()

InitiateA(rule); 
0

我完成了它的傢伙!

#include <string.h> 
#include <stdio.h> 
struct Penalty{ 

double fine; 
char Identity[20]; 
}; 

void InitiateA (struct Penalty data[]); 
void DisplayA (struct Penalty data[]); 


int main(){ 

struct Penalty rule[3]; 

InitiateA(rule); 
DisplayA(rule); 

system ("pause"); 

} 

void InitiateA (struct Penalty data[]){ 
    data[0].fine = 20.00; 
strcpy(data[0].Identity, "Student"); 

data[1].fine = 30.00; 
strcpy(data[1].Identity , "Staff"); 

data[2].fine = 50.00; 
strcpy(data[2].Identity , "Vendor"); 

} 

void DisplayA (struct Penalty data[]){ 
    int i; 
for(i=0;i<3;i++){ 
printf("%s %.2f \n",data[i].Identity, data[i].fine); 
} 
}