2014-03-12 39 views
1

我試圖從結構中讀取一年來檢查當年是否是閏年。從結構中讀取值C

我此刻的代碼是:

typedef struct { 
    int day; 
    int month; 
    int year; 

} date; 

而且在閱讀它的地方是:

int is_date_valid(date *d) { 

    printf("Year = %d\n", d.year); 
    //Checking if year is a leap year 
    if (d->year%400 == 0) 
     printf("%d is a leap year.\n", d.year); 
    else if (d->year%100 == 0) 
     printf("%d is not a leap year.\n", d.year); 
    else if (d->year%4 == 0) 
     printf("%d is a leap year.\n", d.year); 
    else 
     printf("%d is not a leap year.\n", d.year); 



return 0; 
} 

目前,全年沒有在(今年正在讀由用戶輸入並且該函數從主中調用)。我不確定如何從結構中調用該函數在該函數中進行測試。我非常感謝任何人可以給予的幫助!感謝

+0

我沒有得到你的問題是什麼內部使用一年。這個'is_date_valid'函數應該做什麼?你不需要將'formatted_date'轉換成別的東西嗎? – Mauren

+0

你聲明一個'日期d',但是在使用它之前不要設置任何值。您也不會對'formatted_date'參數進行任何操作。所以我不認爲這個功能需要做什麼是清楚的。 – crashmstr

+0

你的本地'd'變量沒有被初始化,所以當然這不起作用。大概你想使用'formatted_date'參數,該參數在函數的參數列表中沒有正確指定。 –

回答

0

方法1種

int is_date_valid(date *d) 
{ 
    //access like d->year 
} 

main() 
{ 
    date d; 
    // get input here 
    is_date_valid(&d) 
} 

方法2

int is_date_valid(int year) 
{ 
    // use year here 
} 

main() 
{ 
    date d; 
    // get input here 
    is_date_valid(d.year) 
} 

注:選擇2個工程如果函數

+0

我推薦'const date * d'。不妨從一開始就這樣做。 –

+0

非常感謝......我認爲這是我正在嘗試做的事情,但不清楚函數中的輸入值。 – user3306583

+0

嗯...似乎沒有工作...你是什麼意思const日期* d?那會是輸入嗎?我真的不明白什麼是const .. – user3306583