【问题标题】:Making fopen() open files from a certain directory使 fopen() 从某个目录打开文件
【发布时间】:2016-01-25 13:37:03
【问题描述】:

我有一个类似

的函数
FILE *file1 = fopen("testing.txt", "r");

我无法修改此行。但是,如果我在/tmp 中创建一个名为“testing.txt”的文件,我是否可以让函数从/tmp 而不是它自己的目录加载文件。 (也许通过修改PATH 变量?)

【问题讨论】:

  • 这取决于您的操作系统。 C 本身没有目录的概念。在 POSIXish 系统中,通常没有办法做到这一点。
  • 您可以致电fopen("mycertaindir\\testing.txt", "r");(Windows 上)或fopen("mycertaindir/testing.txt", "r"); Linux/Unix/Mac 等。请告诉我们更多您想要实现的目标。
  • @MichaelWalz 您需要在 Windows 上引用反斜杠。或者使用正斜杠。
  • 我使用的是 Linux,我无法修改 C 代码本身。我需要通过终端来完成。
  • PATH 变量用于搜索可执行程序。在这里,您只需更改当前目录。请参阅 Jonathon Reinhart 的回答。

标签: c shell


【解决方案1】:

如果程序不更改自己的工作目录,您可以将cd 更改为/tmp,然后从那里运行程序。

$ cd /tmp
$ /absolute/path/to/my_program

【讨论】:

    【解决方案2】:

    这会从您当前的工作目录中打开一个文件。

    您可以使用chdir 更改当前工作目录。

    【讨论】:

    • 我使用的是终端,有没有对应的? (我需要在没有C代码的情况下更改目录)
    【解决方案3】:

    this

    这是使用C 代码。

    您也可以使用cd

    比如去终端:

    $ cd /tmp
    $ cd /path_to_your_program
    

    另外,cd .. 会让你进入上面的目录,cd 会让你进入主目录。

    另外,如果你必须编译的目录下没有程序,你可以使用cp复制文件。

    $ cp /path_to_copy_from /path_to_copy_to
    

    然后你可以去那个目录,从那里运行它。

    我建议您学习基本的 linux 教程,例如 this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 2018-08-23
      • 2019-09-30
      相关资源
      最近更新 更多