簡體   English   中英

為什么fprintf()不寫入文件?

[英]why is fprintf() not writing to a file?

我正在嘗試使用以下代碼將從控制台輸入的一些文本寫入名為“ 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”文件在我打開時不包含任何文本。 為什么會這樣呢? 感謝所有幫助。

由於循環中沒有適當的退出條件,因此終止程序的唯一方法是強制結束進程。 這意味着不能保證任何未決的緩沖輸出將被寫入流output

您可以將循環條件更改為while((c = getchar()) != EOF) 然后,可以使用字符Ctrl + Z (Windows)或Ctrl + D (* nix)將循環條件設置為false,到達行fclose(output) ,這將刷新緩沖區並關閉文件。

另外,將cint ,因為這就是EOF

您可能想要這樣的東西:

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

  fclose(output);
  ...

輸入:

ABCX 輸入

Output.txt將包含ABC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM