2014-03-12 40 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