您的位置:首页 > 编程语言 > C语言/C++

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

2015-05-13 12:26 411 查看
数据格式为

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐