从“in.txt”读入数据 ,计算天数,将结果输出至“out.txt”。两文本文件如图
代码如下:
#include <stdio.h>
#include <stdlib.h>
//#pragma warning(disable:4996) 若编译报错4996,则加上这条预处理语句
//判断是否是闰年,四年闰,百年不闰,四百年闰
bool isleapyear(int year) {
if (((year % 4 == 0) && (year % 100 != 0)) || year % 400 == 0)
return true;
else
return false;
}
int main() {
FILE * in,*out;
in=fopen("in.txt", "r");
out=fopen("out.txt", "w");
int year,month,days;
while((fscanf(in,"[%4d%2d]\n", &year,&month))==2){ //scanf()返回正确读入的变量的个数;若用户输入不合法数据则返回0;若读至文件末尾则返回EOF
//fgetc(in); //这种方法也可以解决换行符“\n”问题
int leapYearDay[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int noLeapYearDay[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if(isleapyear(year))
days=leapYearDay[month - 1];
else
days= noLeapYearDay[month - 1];
fprintf(out,"%4d.%02d has %2d days\n", year, month, days); //格式化输出至文件
}
fclose(in); //关闭文件流
fclose(out);
return EXIT_SUCCESS;
}