分类: 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)。