#c #linux #fopen
#c #linux #fopen
Вопрос:
Я пытаюсь открыть файл внутри каталога через fopen
.
Абсолютный путь следующий:
/home/user/Desktop/project/src/users/login.json
Main.c моего приложения находится здесь:
/home/user/Desktop/project/src
Я пробовал следующие форматы, но они не работают (возвращает нулевой указатель и 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");
Комментарии:
1. A.out находится в /home/user/ Desktop / project (у меня такая же проблема, если я использую Clion)
2. @xing я уже пробовал использовать
FILE * f = fopen("users/login.json", "rb");
в своем main.c (вкл/home/user/Desktop/project/src
. ), но он все равно не работает.3. Вы можете сделать
getcwd
(получить текущий рабочий каталог) и построить путь оттуда.4. @xing не работает
5.
getcwd
может указывать путь, отличный от того, что вы думаете.
Ответ №1:
Я решил это, используя FILE * f = fopen ("src/users/login.json", "rb");
и изменив рабочий каталог Clion на /home/user/project