Chinaunix首页 | 论坛 | 博客
  • 博客访问: 293259
  • 博文数量: 70
  • 博客积分: 1990
  • 博客等级: 上尉
  • 技术积分: 686
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-02 08:52
文章分类

全部博文(70)

文章存档

2015年(2)

2014年(9)

2013年(2)

2012年(20)

2011年(1)

2010年(36)

分类: C/C++

2012-03-31 22:00:52

源码:

#include

#include

#include

#define F_TEST "file_show.c"

#define MAX_SIZE 100*1024

 

int main()

{

       FILE *fp;

       char *sf;

       char flag = 1;

       int i;

      

       fp = fopen(F_TEST,"r");

       if(fp == NULL)

       {

              perror("fopen");

              exit(EXIT_FAILURE);

       }

      

       sf = (char *)malloc(MAX_SIZE);

       if(sf == NULL)

       {

              perror("malloc");

              exit(EXIT_FAILURE);

       }

      

       while(flag)

       {

              memset(sf,0,MAX_SIZE);

              i = fread(sf,sizeof(char),MAX_SIZE,fp);

              fputs(sf,stdout);

              if(i < MAX_SIZE)

                     flag = 0;

       }

      

       free(sf);

       fclose(fp);

      

       return 0;

}
 

1.fread

fread用来读取文件,存放到字符串中,采用块读取。

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

ptr存放读取内容,size是每次读取的块大小,nmemb是读取的最大块数,即最多读取了nmemb*size字节后会停止读取。

返回值:成功则返回读取的块数,即实际读取的大小为(返回值*size)字节,失败则返回0

注意:如果实际读取的大小不满一块,则返回值还是0.

 

例子:

#define MAX_SIZE 100*1024      //最大读取100K

char sf[MAX_SIZE];

 

fp = fopen("file_show.c","r");

i = fread(sf,sizeof(char),MAX_SIZE,fp);

执行后:

i = 667

如果换成

i = fread(sf,MAX_SIZE,10,fp);

执行后:i = 0,即读取不满一块(100KB)
阅读(1114) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~