【问题标题】:Use relative path with fopen使用 fopen 的相对路径
【发布时间】:2021-02-06 09:48:26
【问题描述】:

我正在尝试通过fopen 打开目录中的文件。

绝对路径如下:

/home/user/Desktop/project/src/users/login.json

我的应用程序的 main.c 在这里:

/home/user/Desktop/project/src

我尝试了以下格式,但它们不起作用(返回 NULL 指针,errno 为 2):

FILE *f = fopen("./users/login.json", "rb");
FILE *f = fopen("/users/login.json", "rb");
FILE *f = fopen("login.json", "rb");
FILE *f = fopen("src/login.json", "rb");
FILE *f = fopen("./src/login.json", "rb");

绝对路径可以代替:

FILE *f = fopen("/home/user/Desktop/project/src/users/login.json", "rb");

【问题讨论】:

  • a.out 在 /home/user/Desktop/project 中(如果我使用 Clion,我也会遇到同样的问题)
  • @xing 我已经尝试在我的 main.c 中使用 FILE * f = fopen("users/login.json", "rb");(在 /home/user/Desktop/project/src 上),但它仍然不起作用。
  • 你可以做一个getcwd(获取当前工作目录)并从那里构造到路径。
  • @xing 不起作用
  • getcwd 可能会报告与您的想法不同的路径。

标签: c linux fopen


【解决方案1】:

我通过使用FILE * f = fopen ("src/users/login.json", "rb"); 并将Clion 工作目录更改为/home/user/project 解决了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多