fread()是c库函数,利于移植,使用缓存,效率较read()高。
原型:
size_t fread(void *buffer, size_t size, size_t count, FILE * stream);
要注意的是它的返回值,如果读取到了文件尾,返回值小于count,可以使用feof()函数检测出来,返回真。
PS:返回值代表的是某种类型的size的个数。
下面程序按照1024k(一次大小为sizeof(char))一次读取二进制文件。
#include <stdio.h> #include <string.h> #define BUFFSIZE 1024 int main(int argc, char **argv){ char buff[BUFFSIZE]; FILE *fd = fopen (argv[1], "rb"); int count, errno=0; bzero (buff, BUFFSIZE); while (!feof (fd)){ count = fread (buff, sizeof (char), BUFFSIZE, fd); int n = feof (fd); printf ("%d,%d\n", count, n); printf ("%s\n",strerror (errno)); } return 0; }