c++读取obj文件的数据 其中f中只取面片定点数据

来源:互联网 发布:mysql 查询某一年数据 编辑:程序博客网 时间:2024/05/21 07:03

数据格式为 

f 40022/40306/40024 26860/27001/26862 40023/40307/40025 

f中只取面片定点数据
代码如下

#include<stdio.h>#include<iostream>#include<string>#include<fstream>#include<sstream>using namespace std;int main(){FILE *fp;char ext[1000];string tempStr, lineStr;bool end_of_file = false;double  a, b, c;int vnum=0;int fnum=0;char m[30],n[30],q[30];if ((fp = _wfopen(L"C:\\Users\\DELL\\Desktop\\M1-91(YINHU)-jm17w-zhk.obj", L"r")) == NULL)return false;//if ((fp = _wfopen(L"C:\\Users\\DELL\\Desktop\\1.txt", L"r")) == NULL)//return false;//------------统计总数 定点和面片——————————————    //for(int jj=0;jj<20000000;jj++)while(!feof(fp)){fscanf(fp, "%s", ext);//读取文件第一行的“OFF”//cout<<ext<<"\n";if(ext[0]=='v'&&ext[1]=='\0'){vnum++;}    int i=0,j=0,k=0;if(ext[0]=='f'&&ext[1]=='\0'){fnum++;}//if (strcmp(ext, "OFF") != 0 && strcmp(ext, "off") != 0)//判断文件格式是否是“OFF”//return false;//读取文件第二行的顶点数和面数//fscanf(fp, "%d%d%d\n", &a, &b, &c);//创建顶点和面数组//}}cout<<"vnum="<<vnum<<" "<<"fnum="<<fnum<<"\n";fseek(fp,0,SEEK_SET);//———————————————读取顶底和面片信息————————————    //for(int jj=0;jj<20000000;jj++)while(!feof(fp)){fscanf(fp, "%s", ext);//读取文件第一行的“OFF”//cout<<ext<<"\n";if(ext[0]=='v'&&ext[1]=='\0'){fscanf(fp, "%lf%lf%lf\n", &a, &b, &c);    cout << a <<" "<< b<<" " << c<<" " << "\n";}    int i=0,j=0,k=0;if(ext[0]=='f'&&ext[1]=='\0'){fscanf(fp, "%s%s%s", &m, &n, &q);   for (int kk = 0; m[kk] != '/'; kk++)              {                  i = i * 10 + (m[kk] - 48);              }                for (int kk = 0; n[kk] != '/'; kk++)              {                  j = j * 10 + (n[kk] - 48);              }                for (int kk = 0; q[kk] != '/'; kk++)              {                  k = k * 10 + (q[kk] - 48);              }      cout << i <<" "<< j<<" " << k<<" " << "\n";}//if (strcmp(ext, "OFF") != 0 && strcmp(ext, "off") != 0)//判断文件格式是否是“OFF”//return false;//读取文件第二行的顶点数和面数//fscanf(fp, "%d%d%d\n", &a, &b, &c);//创建顶点和面数组//}}fclose(fp);}


0 0
原创粉丝点击