首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个对于txt文件这逐行提取有关问题

2012-12-29 
一个对于txt文件这逐行提取问题void readstr(FILE *f,char *string){do{fgets(string, 255, f)} while ((

一个对于txt文件这逐行提取问题
void readstr(FILE *f,char *string)
{
do
{
fgets(string, 255, f);
} while ((string[0] == '/') || (string[0] == '\n'));
return;
}

void SetupWorld()
{
float x, y, z, u, v;
int numtriangles;
FILE *filein;
char oneline[25];
filein = fopen("data/world.txt", "rt");// File To Load World Data From

readstr(filein,oneline);
sscanf(oneline, "NUMPOLLIES %d\n", &numtriangles);

sector1.triangle = new TRIANGLE[numtriangles];
sector1.numtriangles = numtriangles;
for (int loop = 0; loop < numtriangles; loop++)
{
for (int vert = 0; vert < 3; vert++)
{
readstr(filein,oneline);
sscanf(oneline, "%f %f %f %f %f", &x, &y, &z, &u, &v);
sector1.triangle[loop].vertex[vert].x = x;
sector1.triangle[loop].vertex[vert].y = y;
sector1.triangle[loop].vertex[vert].z = z;
sector1.triangle[loop].vertex[vert].u = u;
sector1.triangle[loop].vertex[vert].v = v;
}
}
fclose(filein);
return;
}

全部程序太长就不写了,是NeHe OPENGL第十课里面的代码,就是通过这两个函数来实现对于文本中点数据的逐行读取,大部分都很明白,就是不明白他是怎么实现读完一行后,在下次for循环时是怎么读到下一行的,难道fgets函数还有什么隐藏属性,比如读完一行后指针停在最后,以便于继续读下一行???
本人菜鸟一个,在数据读取方面尤其欠缺,如果有关于c++数据读取方面好的建议欢迎提出,应该有其他更好的函数。


这是数据格式
NUMPOLLIES 36

// Floor 1
-3.0  0.0 -3.0 0.0 6.0
-3.0  0.0  3.0 0.0 0.0
 3.0  0.0  3.0 6.0 0.0

-3.0  0.0 -3.0 0.0 6.0
 3.0  0.0 -3.0 6.0 6.0
 3.0  0.0  3.0 6.0 0.0

// Ceiling 1
-3.0  1.0 -3.0 0.0 6.0
-3.0  1.0  3.0 0.0 0.0
 3.0  1.0  3.0 6.0 0.0
-3.0  1.0 -3.0 0.0 6.0
 3.0  1.0 -3.0 6.0 6.0
 3.0  1.0  3.0 6.0 0.0

// A1

-2.0  1.0  -2.0 0.0 1.0
-2.0  0.0  -2.0 0.0 0.0
-0.5  0.0  -2.0 1.5 0.0
-2.0  1.0  -2.0 0.0 1.0
-0.5  1.0  -2.0 1.5 1.0
-0.5  0.0  -2.0 1.5 0.0

// A2

 2.0  1.0  -2.0 2.0 1.0
 2.0  0.0  -2.0 2.0 0.0
 0.5  0.0  -2.0 0.5 0.0
 2.0  1.0  -2.0 2.0 1.0
 0.5  1.0  -2.0 0.5 1.0
 0.5  0.0  -2.0 0.5 0.0


[解决办法]
http://topic.csdn.net/u/20110223/15/3fd75e15-fe7d-432b-8b6c-c048ddec20a0.html

热点排行