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

Joy*_*Joy 5 c buffer

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

Aus*_*oke 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;
}
Run Code Online (Sandbox Code Playgroud)

要么

#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;
}
Run Code Online (Sandbox Code Playgroud)