c中的文件处理代码有什么问题?

What is wrong with this code of file handling in c?

我正在尝试从终端向文件写入内容。正在创建文件,但内容尚未写入文件。

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    int main(int argc, char *argv[])
    {
        FILE *fp;
        fp=fopen(argv[1],"w");
        char ch;
        while((ch=getchar())!=EOF)
        {
           putc(ch,fp);
        }
        fclose(fp);
        return 0;
    }

如果您不发出 EOF 信号(Ctrl+Z 在 Windows 和 Ctrl+D 在 Linux), 然后循环将继续执行直到它接收到该信号。

如果你试图在程序还在执行的时候用自己的眼睛读取文件,那么文件流将不会关闭(fclose(fp);不会执行),因此文件看起来像你清空,即使内容会在文件流关闭时显示给你。

以下工作正常:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char *argv[])
{
    FILE *fp;
    fp=fopen(argv[1],"w");
    char ch;
    while(1)
    {
        ch = (char)getchar();
        putc(ch,fp);
        if(ch == '.') break;
    }
    fclose(fp);
    return 0;
}