@
messyidea realloc 的话是在原有基础上扩充存储单元,前面的值是保留下来的,(“ realloc 之后 N 没有变化, f 一直变大,那不是不管多大数据量,只能够 reqlloc 一遍?”)被你一说真的发现了!感谢 ing ,我再改改测试下
#include<stdio.h>
#include<stdlib.h>
#define N 2
int main(void)
{
int year, mon, day,t=0,i;
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int *flag;
int f=0;
flag=(int*)malloc(N*sizeof(int));
while(scanf("%d/%d/%d",&year,&mon,&day)!= EOF )
{
if ( year%400 == 0 || (year%100 != 0 && year%4 == 0))
{
month[1]+=1;
}
for(i=0;i<mon-1;i++)
t+=month[i];
t=t+day;
*(flag+f)=t;
f++;
if (f == N)
flag=(int*)realloc(flag,N*sizeof(int));
t=0;
month[1]=28;
}
for(int cnt=0;cnt<f;cnt++)
{
printf("%d\n",*(flag+cnt));
}
free(flag);
return 0;
}