我正在尝试使用以下代码将从控制台输入的一些文本写入名为“ 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”文件在我打开时不包含任何文本。为什么会这样呢? 感谢所有帮助。
答案 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
。