我编写了一个程序,它通过以下方式读取整个文件fgetc
:
while ((c = fgetc(f)) != EOF) { ... }
但是程序太慢了。当我更改fgetc
为fread
static unsigned char buf[4096];
while ((n = fread(buf, 1, sizeof(buf), f)) > 0) { ... }
该程序的运行速度提高了大约10 倍。
为什么?据我所知,fgetc
它是一个缓冲函数,所以它应该与带有显式缓冲区的第二个版本一样快,不是吗?