这个c文件处理代码有什么问题?

时间:2017-09-19 09:47:28

标签: c file-handling getchar putchar getc

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

    #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;
    }

2 个答案:

答案 0 :(得分:5)

如果您没有发出EOF信号(Windows中的 Ctrl + Z 和Linux中的 Ctrl + D ),则循环将继续执行,直到收到该信号

如果您在程序仍在执行时尝试用自己的眼睛读取文件,那么文件流将不会关闭(fclose(fp);将无法执行),因此该文件将显示为空,即使文件流关闭时会向您显示内容。

答案 1 :(得分:1)

以下工作正常:

#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;
}