【问题标题】:File writing in C [duplicate]用C编写文件[重复]
【发布时间】:2017-03-10 13:55:06
【问题描述】:

我正在尝试使用 C 将数据写入文件。我编写了以下代码。

#include<stdio.h>

void main(){

    FILE *f1;
    char c;

    printf("Data Input\n\n");
    f1 = fopen("INPUT", "w");

    while((c = getchar()) != EOF)   putc(c, f1);

    fclose(f1);

    printf("\nData Output\n\n");
    f1 = fopen("INPUT", "r");

    while((c=getc(f1)) != EOF)  printf("%c", c);
    fclose(f1);

}

但是代码行为异常。下图是输出。

我必须输入 3 次 EOF 才能使其工作。我不明白为什么会这样。我的代码有错误吗? 我正在使用 Dev-C++ 5.6.3

提前致谢。

【问题讨论】:

  • 注意: void main() 是不合时宜的。 main() 的正确定义是 int main (void)int main (int argc, char **argv)。您还将看到等效且正确的int main (int argc, char *argv[])。有非标准操作系统特定的参数扩展,例如char **envp,但那些不应该用于可移植代码。
  • 为什么用putc写f1,用printf写stdout?使用putc(c, stdout) 会更一致

标签: c file


【解决方案1】:

如果char 在您的平台上未签名,则它无法存储EOF,并且比较永远不会成立。

改变

char c;

int c;

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 2019-02-23
    • 2015-07-06
    • 1970-01-01
    相关资源
    最近更新 更多