Chinaunix首页 | 论坛 | 博客

  • 博客访问: 277530
  • 博文数量: 55
  • 博客积分: 1597
  • 博客等级: 上尉
  • 技术积分: 590
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-30 17:40
文章分类

全部博文(55)

文章存档

2016年(2)

2014年(5)

2013年(35)

2012年(5)

2010年(4)

2009年(4)

我的朋友

分类: C/C++

2013-03-23 16:07:22

原型:char *fgets(char *buf, int bufsize, FILE *stream)

参数:从stream读取bufsize大小的数据到buf
功能:
从文件结构体指针stream中读取数据,每次读取一行。
读取的数据保存在buf指向的字符数组中,每次最多读取 bufsize-1个字符(第bufsize个字符赋'\0'),
如果文件中的该行,不足bufsize个字符,则读完该行就结束。如果函数读取成功,则 返回指针buf,失败则返回NULL。
stream文件流指针体指向文件内容地址的偏移原则
如果使用fgets()读取某个文件,第一次读取的bufsize为5,而文件的第一行有10个字符(算上 '\n'),那么读取文件的指针会偏移至当前读取完的这个字符之后的位置。
也就是第二次再用fgets()读取文件的时候,则会继续读取其后的字符。
 如果使用fgets() 读取文件的时候bufsize大于该行的字符总数加2(多出来的两个,一个保存文件本身的'\n'换行,一个保存字符串本身的结束标识'\0'),
文件并 不会继续读下去,仅仅只是这一行读取完,随后指向文件的指针会自动偏移至下一行。

示例:

int main(void)
{
    FILE *fp = NULL;
    char buf[512] = {0};

    fp = fopen("touch.txt","r");
    if ( NULL == fp) {
      printf("open file failed.\n");
      return 0;
    }

    fgets(buf, 5, fp);
    printf("first read 5 char buf = %s\n", buf);
    fgets(buf, 5, fp);
    printf("second read 5 char  buf = %s\n", buf);
    return 0;
}





阅读(4782) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~