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; }