为什么fprintf()不写入文件?

时间:2019-02-22 16:38:25

标签: c

我正在尝试使用以下代码将从控制台输入的一些文本写入名为“ output.txt”的文件。

#include <stdio.h>
#include <stdlib.h>

int main()
{
  printf("write something\n");
  char c;

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

  if(!output)
    {
      printf("couldn't open file\n");
      return 1;
    }

  while(c=getchar())
    fprintf(output,"%c",c);

    fclose(output);

}

但是“ output.txt”文件在我打开时不包含任何文本。为什么会这样呢? 感谢所有帮助。

2 个答案:

答案 0 :(得分:3)

由于循环中没有适当的退出条件,因此终止程序的唯一方法是强制结束进程。这意味着不能保证将任何未决的缓冲输出写入流output

您可以做的是将循环条件更改为while((c = getchar()) != EOF)。然后,您可以使用字符 Ctrl + Z (Windows)或 Ctrl + D (* nix)将循环条件设置为false,到达行fclose(output),这将刷新缓冲区并关闭文件。

另外,将c设为int,因为这就是EOF

答案 1 :(得分:2)

您可能想要这样的东西:

  ...
  while ((c = getchar()) != 'X')
    fprintf(output, "%c", c);

  fclose(output);
  ...

输入:

ABCX 输入

Output.txt将包含ABC