【发布时间】:2015-05-29 22:55:24
【问题描述】:
我知道这将是一个非常愚蠢的问题,但是在阅读了这么多关于整个“缓冲区”系统的文档后,我不明白为什么人们会刷新流而不刷新缓冲区。
我见过人们这样写:
FILE* file=fopen("mytext.txt","wr");
char buffer[10]="";
setbuf(file,buffer);
//do some stuff....
fflush(file);
....
fclose(file);
所以我想知道,既然我们实际上将东西存储在缓冲区中,为什么我们刷新它关联的流而不是直接刷新缓冲区,实际上存储了一些东西并且应该被刷新。(好吧,有些人告诉我,如果事情像我说的那样,那就是同样的事情,所以麻烦我自己......)
例如,我们不能写fflush(buffer)之类的东西。为什么?
【问题讨论】:
-
在你家,你说的是“冲粪”还是“冲马桶”? :-) 冲洗是厕所/溪流的属性,而不是(审查的)/数据的属性。
-
不相关:
"wr"??,应该是char buffer[BUFSIZ]; -
@milleniumbug
"wr"和"rw"都是无效的文件模式。 -
@BLUEPIXY 是的,忽略我之前的评论。