[英]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)
,這將刷新緩沖區並關閉文件。
另外,將c
為int
,因為這就是EOF
。
您可能想要這樣的東西:
...
while ((c = getchar()) != 'X')
fprintf(output, "%c", c);
fclose(output);
...
輸入:
ABCX 輸入
Output.txt將包含ABC
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.