请IGNORE,无能为力!
实际上只是搞乱了一些基本的文件i / o,在一些嵌套的Loops中但是输出并不是我想要的,尽管我似乎无法让它工作。
#include <stdio.h>
int main(void) {
FILE *pFile;
pFile = fopen("dates.txt", "w");
int day, month, year;
for(day = 1; day <= 31; day++) {
for(month = 1; month <= 12; month++) {
for(year = 1900; year <= 2050; year++) {
if(day < 10 && month < 10) {
fprintf(pFile, "0%d/0%d/%d\n", day, month, year);
}else {
fprintf(pFile, "%d/%d/%d\n", day, month, year);
}
}
}
}
return 0;
}
任何提示非常感谢!作为一个抬头,这不是一个家庭作业,只是一些实验。
干杯。
答案 0 :(得分:3)
您可以使用mktime
创建日期。然后添加1天并创建下一个日期。
这样你就可以迭代了。
以下代码显示前200个日期。
#include <time.h>
#include <stdio.h>
int main(){
struct tm *lt;
int i=200;
//time_t t=0; // first second on epoch
time_t t=-2209010000; // first second on 1900 (works on GCC, dind't test MSVS compiler)
while(i--){
lt = localtime(&t);
printf("YYYY:MM:DD = %04d:%02d:%02d\n", lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday);
lt->tm_hour+=24; // adding 24 hours
t = mktime(lt);
}
return 0;
}
顺便说一下 epoch 后面的工作日期。至少在我gcc version 4.4.3
的{{1}}
答案 1 :(得分:1)
你实际上可以有4个日期和月份组合,在这些组合中,您可能会或不会以0为前缀,而您尝试使用单个if来处理它。
案例1:日期和月份<10,由第一个if处理。
案例2:日&gt; 10和月&lt; 10,未处理
案例3:日&lt; 10和月> 10,未处理
案例4:两者都是&gt; 10.处理其他。
%02d是处理所有案件的选项。
答案 2 :(得分:0)
您可能希望在日循环之前的月循环之前进行年循环(与当前顺序相反)。
你需要让每月最大日的测试变得更聪明(你需要知道闰年的规则(注意1900不是闰年,MS Excel的速度,2000年)。
您可以使用%02d
或%.2d
打印月份和日期的2位数字,因此您只需要一个printf()
语句。