读书人

一个关于time的有关问题

发布时间: 2013-03-14 10:33:15 作者: rapoo

一个关于time的问题

int FileOper::MyFileOper_ReadData(VDState *MyVdState)
{
VDState vd;
MyVdState=&vd;
FILE *in=fopen("VDSample.txt","r");
char line[1024];
int i=0,data=0,count=0,traffic;
double traffic_all=0,speed_all=0.0,lengt_all=0.0,occupy_all=0.0,speed,lengt,occupy;
//从下面开始
time_t _t2,nowtime;
struct tm *mytime;
nowtime=time(NULL);
mytime=localtime(&nowtime);
while(!feof(in))
{
int rtn=0;
memset(line,0,1024);
fgets(line,1024,in);
rtn=sscanf(line,"%*5s,%*1s,%d-%d-%d %d:%d:%d,%d,%lf,%lf,%lf",&mytime->tm_year,&mytime->tm_mon,&mytime->tm_mday,&mytime->tm_hour,&mytime->tm_min,&mytime->tm_sec,&traffic,&speed,&lengt,&occupy);
if(rtn>0)
{
mytime->tm_year-=1900;
mytime->tm_mon-=1;
_t2=mktime(mytime);
if(difftime(nowtime,_t2)<=660)
{
traffic_all+=traffic;
speed_all+=speed;
lengt_all+=lengt;
occupy_all+=occupy;
}
}
}
//到这里结束
MyVdState->iFlowrate_Down=traffic_all;
MyVdState->iOccup_Down=occupy_all;
MyVdState->iSpeed_Down=speed_all;
fclose(in);
return 0;
}

上面代码是写在DLL里的,注销掉标识里面的代码,dll调用没有问题,但是不注销时,会出现问题CTime问题,但是单独截取这一段运行没有问题,标识中的代码有上面问题吗?

VDSample.txt里面数据如下:
CCTV1,1,2012-11-01 15:39:39,6,7.0,18.0,19.00
CCTV1,1,2012-11-01 15:40:39,5,8.0,17.0,20.00
[解决办法]
别忘了delete(mytime), 而且
mytime=localtime(&nowtime);
要改为
*mytime=*localtime(&nowtime);

引用:
引用:mytime没有分配空间。
试试改为
struct tm mytime;
多谢版主,不过我是这么改的struct tm *mytime=new tm;貌似mytime不能不带*吧


可以不带星号的,只是程序要改改.

struct tm mytime;

mytime=localtime(&nowtime);
改为
mytime=*localtime(&nowtime);
.....

读书人网 >C++

热点推荐