C编程:无缓冲区写入文件

时间:2011-12-05 03:29:23

标签: c buffer

我使用fputs将字符串写入文件,但在调试模式下,语句fputs后内容不会写入磁盘。我认为有一些缓冲。但我想通过直接查看内容来调试以检查逻辑是否正确。反正有没有禁用缓冲区?感谢。

2 个答案:

答案 0 :(得分:18)

您有几种选择:

  • fflush(f);在某一点刷新缓冲区。
  • setbuf(f, NULL);禁用缓冲。

f显然属于FILE*

#include <stdio.h>

int main(void)
{
   char s[100];

   FILE *f = fopen("test.txt", "w");
   setbuf(f, NULL);

   while (fgets(s, 100, stdin))
      fputs(s, f);

   return 0;
}

OR

#include <stdio.h>

int main(void)
{
   char s[100];

   FILE *f = fopen("test.txt", "w");

   while (fgets(s, 100, stdin)) {
      fputs(s, f);
      fflush(f);
   }

   return 0;
}

答案 1 :(得分:0)

我不知道您是否无法禁用缓冲区,但您可以使用fflush强制它在磁盘中写入

更多关于它:( C ++参考,但与C中的相同): http://www.cplusplus.com/reference/clibrary/cstdio/fflush/