64,637
社区成员
发帖
与我相关
我的任务
分享
GetSysTime(_T("开始测试2:"));
vector<pnode> list2;
string Fname="D:\\点集合\\tt500.txt";
FILE * fp=fopen(Fname.c_str(),"rb+");
if(fp==NULL)
{
MessageBox(NULL,_T("aa"),_T("文件打开失败"),0);
return;
}
while(!feof(fp))
{
pnode nd;
fscanf(fp,"%Lf,%Lf,%Lf,%Lf\n",&nd.x,&nd.y,&nd.z,&nd.i);
//list2.push_back(nd);
}
fclose(fp);
GetSysTime(_T("结束测试2:"));
GetSysTime(_T("开始测试3:"));
FILE *fp=fopen("D:\\点\\tt500.txt","rb+");
char line[256]={0};
while(fgets(line,255,fp))
{
pnode nd;
sscanf(line,"%lf,%lf,%lf,",&nd.x,&nd.y,&nd.z);
double xx=nd.x;
double yy=nd.y;
double zz=nd.z;
}
fclose(fp);
GetSysTime(_T("开始测试3:"));
经过测试此次需要35s,但是如果不处理读取的数据,即注释掉
//sscanf(line,"%lf,%lf,%lf,",&nd.x,&nd.y,&nd.z);
// double xx=nd.x;
// double yy=nd.y;
// double zz=nd.z;
只需要1.4s
关键是如何提高sscanf(line,"%lf,%lf,%lf,",&nd.x,&nd.y,&nd.z);的效率
有没有更好的办法将line 转化为结构体?