fgets():
fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。
函数原型是:char *fgets(char *s, int n, FILE *stream);
例:
FILE* fp = fopen(filename,"r");
if(fp == NULL)
{
printf("error:fp = null");
}
std::vector Top;
while (!feof(fp))
{
char
line[100]; // FIXME: 这里简单的假设一行不会超过 100 字节
char *p = fgets(line, sizeof(line),
fp);//每次读取一行,注意这里的循环,下次读时自动到下一行啦
if (!p) continue;
while (p &&
isspace(*p)) p++; // 去除行首空格
if (*p == '*') //行末尾,//这里行末尾都加了个‘*’
{
break;
}
if(*p == '#') //一组顶点结束符
{
sscanf(p,"#%d",
&tp.colour);
Top.push_back(tp);
tp.t_p.clear();
continue;
}
}
//
fread():
函数原型
size_t fread ( void *buffer, size_t size, size_t count, FILE
*stream) ;
参 数
buffer
用于接收数据的内存地址,大小至少是size*count字节.
size
单个元素的大小,单位是字节
count
元素的个数,每个元素是size字节.
stream
输入流
返回值
实际读取的元素个数.如果返回值与count不相同,则可能文件结尾或发生错误.
从ferror和feof获取错误信息或检测是否到达文件结尾.
例:
double rbf_gamma;
fread(&(rbf_gamma),sizeof(double),1,fp);
char version_buffer[10];
fread (&version_buffer,sizeof(char),10,fp)