【问题标题】:reading file in C with fopen()使用 fopen() 在 C 中读取文件
【发布时间】:2013-04-30 00:11:43
【问题描述】:

我正在用 C 语言编写一个需要从文件中读取行的程序。我目前正在为此使用 fopen()。

这适用于我的程序。

./myProgram /path/to/file

但是,我无法读取这样的输入:

./myProgram - <<END
This
is
some
nameless
file
END

所以我猜- 是包含两个 END 之间内容的无名文件,但我的程序会给出与在这种情况下未找到的文件相关的错误,这意味着 fopen() 返回了一个空指针。

我想知道这里发生了什么?

【问题讨论】:

  • fopen 尝试打开名为 - 的文件,但大概没有找到它。解析选项,如果文件名是-,则从stdin读取。
  • @DanielFischer 是的,我最终想通了!如果您在下面发布,我会接受您的回答:)

标签: c command-line command-line-arguments


【解决方案1】:

你是对的。根据fopenman,fopen 需要const char* 才能打开文件。如果您只是将 argv 传递给 fopen,“这是一些无名文件”不是文件路径,因此 fopen 将无法找到您的文件。

如果您想从标准输入读取,可以使用fgets 或任何其他带有FILE *stream 参数的读取函数,您可以将stdin 文件流传递给该函数。

【讨论】:

  • 感谢您的帮助!我也想出了一种方法来使用 fopen()。
  • 我只是将FILE 指针设置为stdin 并从那里读取:)
猜你喜欢
  • 2014-12-13
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 2011-09-17
  • 2018-03-27
相关资源
最近更新 更多