网王机器人真田弦一郎:有没有什么函数或标志可以测试内存缓冲区满了没有?

来源:百度文库 编辑:中科新闻网 时间:2024/05/08 04:20:30
C语言(用的是turboc2.0)中,对硬盘写数据(比如说用fputs)时,先把数据装入内存缓冲区中,待缓冲区满了再写到硬盘上。
我的问题是:怎样可以知道缓冲区是否满了?有没有什么函数或标志可以测试内存缓冲区满了没有?
(我问这个问题是因为我在编一个程序,其中,要把很大一个文件写到硬盘上,估计缓冲区里一次装不下。这样,我就把fputs写在了for循环里。可是,对硬盘写东西较内存里操作要慢呀。于是,我就想到了用delay。这样,我就要知道什么时候缓冲区满了。等满了就可以用delay了。)

现代计算机都用虚拟存储,输出缓冲区应会自己调节,只要你的变量内存空间分配没问题,输出缓冲应没问题.
就fputs来说,你可能已用fgets(或别的方法)得到了这个长string,肯定有个地方存这个string.
例如:
FILE *fin, *fout;
char *buff;
int NN;
buff = (char *) malloc(NN * sizeof(char));
fin = fopen(..); fout = fopen(....);
fgets (buff,NN,fin);
fputs (buff,fout);
如果你在分配buff时没问题,则输出也没问题.

buff分配有无问题检测是:
if ( !buff) {
printf("No enough memory for buff\n"); exit(1);
}