【问题标题】:reading in a file line by line - where is the file?逐行读取文件-文件在哪里?
【发布时间】:2017-06-22 18:39:55
【问题描述】:

我不熟悉在 Mac 上使用终端来使用 GNU C。

我使用了一段标准代码逐行读取文件并通过“file.txt”引用文件。

我可以编译源代码,但是当我执行代码时找不到 file.txt。我已将该文件与源文件和可执行文件放在同一目录中。我应该添加一个完整的目录路径。我试过了:-

"/Users/Swiss/documents/swdev/projects/code_ex/file.txt"

但这会出现与仅使用“file.txt”相同的错误。

我得到的错误是:-

-bash: ./read_file.lbl: 没有这样的文件或目录

我假设它是它找不到的 file.txt - 还是别的什么?

代码是:-

#include <stdio.h>
int main ( void )
{
   static const char filename[] =  "/Users/Swiss/documents/swdev/projects/code_ex/file.txt";
   FILE *file = fopen ( filename, "r" );
   if ( file != NULL )
   {
      char line [ 128 ]; /* or other suitable maximum line size */
      while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */
      {
         fputs ( line, stdout ); /* write the line */
      }
      fclose ( file );
   }
   else
   {
      perror ( filename ); /* why didn't the file open? */
   }
   return 0;
}

我们将热烈欢迎任何帮助。

【问题讨论】:

  • 你的代码在哪里?请edit您的问题并提供minimal reproducible example
  • 请发布您的代码。
  • 您发布的错误消息说它找不到 read_file.lbl,而不是 file.txt。你究竟是如何运行你编译的程序的?
  • @SwissT 名称“read_file.lbl”从何而来?也请回答 dbush' 的问题,你是如何运行的应该由你复制粘贴你正在运行的命令来回答。 (你还应该向我们展示你是如何编译/链接你的程序的)
  • @SwissT 请编辑您的问题并告诉我们以下内容:C 源文件的确切名称(例如 myprog.c)、您为编译程序而启动的命令(例如 gcc myprog.c),以及最后是您键入以启动程序的命令(例如./a.out)。

标签: c macos terminal


【解决方案1】:

你的程序是正确的。如果源文件名为read_file_lbl.c,请运行以下命令编译并从终端运行:

$ gcc -Wall -o read_file_lbl read_file_lbl.c
$ ./read_file_lbl

如果使用gcc read_file_lbl.c 编译程序,编译器会将可执行文件命名为a.out,因此尝试运行./read_file_lbl 会失败,因为shell 找不到这样的可执行文件。

还请注意,gcc 实际上是指向您环境中clang 的链接。您可以检查:

$ gcc --version

【讨论】:

  • 谢谢大家。将来我需要更清楚地了解我的问题。谢谢你的帮助。
  • @SwissT:没问题,一个人通过迈出第一步来学会走路......您可以通过点击分数下方的灰色复选标记来接受这个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2012-06-13
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多