fgets()和fread()函数

本文详细介绍了C语言中用于文件读取的fgets与fread函数。fgets函数用于逐行读取文件,而fread函数则按指定大小的块读取文件。文中通过示例代码展示了如何使用这两个函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值