プログラムの内容
以下のプログラムは答えとして渡されたものなんですが、
コマンド引数を使ったプログラムの流れがよくわかりません。
簡単に解説してくれる方、いませんか?
#include <stdio.h>
int leapyear(int year){
if(year%400 == 0) return 1;
else if(year%4 == 0 && year%100 != 0) return 1;
else return 0;
}
void addmonth(int *day, int *month, int *year){
*day = 1; (*month)++;
if(*month > 12) {
*month = 1; (*year)++;
}
}
int main(int argc, char *argv[]){
int year, month, day, a=0, max_days;
int month_days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(argc < 2) max_days = 10000;
else max_days = atoi(argv[1]);
printf("今日は西暦何年 何月 何日? ");
scanf("%d%d%d",&year,&month,&day);
while(a<max_days) {
a++; day++;
if(month == 2 && leapyear(year)) {
if(day > 29) addmonth(&day, &month, &year);
} else {
if(day > month_days[month-1]) addmonth(&day, &month, &year);
}
}
printf("今日から%d日後は、%d年%d月%d日です。",max_days, year, month, day);
}
補足
バカなミスでした(笑 trueは既にためしていたのですが、Trueと大文字にしていました。それで赤線エラーがでていきづまっていたのですが・・・ trueと小文字にしないといけなかったんですね・・・ ありがとうございます!