【问题标题】:C programming: Reading from file and printing to consoleC 编程:从文件读取并打印到控制台
【发布时间】:2017-02-06 03:46:20
【问题描述】:

晚上好,

我知道有类似的问题,我一直在筛选,但这个特定问题似乎是独一无二的。

我试图弄清楚如何简单地将文本文件读入字符串,然后将字符串写入标准输出。我尝试了这段代码,但是当我调用 puts() 时,控制台中什么也没有发生。 file.txt 正确生成了“hello”,但最后一个 if 语句由于某种原因似乎不起作用,因为它没有达到我的测试条件。我怎样才能使它起作用?

这是网上很多很多例子给出的代码,只是稍作修改:

#include <stdio.h>

int main()
{
    FILE *fp;
    char str[60];

    fp = fopen("file.txt","w+");
    fprintf(fp,"%s","hello");
    if(fp==NULL){
        perror("Error opening file");
        return(-1);
    }
    if (fgets (str, 60, fp)!=NULL)
        puts(str);
        printf("%s","test");
    fclose(fp);
return 0;
}

【问题讨论】:

  • 尝试在程序末尾添加printf("\n")
  • 单步调试代码时调试器会告诉你什么?

标签: c file io console fgets


【解决方案1】:

当您调用fgets() 时,文件指针已经位于文件末尾。在fgets() 之前添加对rewind(fp) 的呼叫。

哦,当您打开文件时,请在调用 fprintf() 之前检查 fp==NULL

【讨论】:

  • 啊哈,这里也有很好的解决方案。谢谢
  • 这应该是公认的答案,因为它是承认 OP 在"w+" 模式下打开文件的唯一答案,也是 cmet 错误放置if(fp==NULL)... 的唯一答案
【解决方案2】:

在你写完文件后,你必须fclose()fp和re-fopen()读取文件。

【讨论】:

  • 天哪,谢谢。在这呆了很长一段时间>.
猜你喜欢
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多