在C中的Linux上使用相对路径打开文件

在C中的Linux上使用相对路径打开文件,c,linux,file,C,Linux,File,我是c编程新手。我有以下目录结构 Project |____ dataset | |_____ data.txt | |____ main.c 我的代码: FILE*stream=fopen(“dataset/data.txt”、“r”); 或 FILE*stream=fopen(“./dataset/data.txt”,“r”); 返回此错误:没有此类文件或目录 但是,当我使用绝对路径时,它不会出现任何错误: FILE*stream=fopen(“/

我是c编程新手。我有以下目录结构

Project
   |____ dataset
   |        |_____ data.txt
   |
   |____ main.c
我的代码:

FILE*stream=fopen(“dataset/data.txt”、“r”);

FILE*stream=fopen(“./dataset/data.txt”,“r”);
返回此错误:
没有此类文件或目录

但是,当我使用绝对路径时,它不会出现任何错误:

FILE*stream=fopen(“/home//C//dataset/data.txt”,“r”);
我做错了什么?

阅读

您可能希望使用,因为调用和所有调用都可能失败

fopen
失败(或部分失败)时,使用或

意识到,并且


另请参见。

相对路径仅在您处于正确的当前文件夹中时有效运行程序时的当前目录是什么?程序是否更改过目录?相对路径的基本位置与源代码的位置无关;唯一重要的是process.IOW的当前工作目录,请尝试以下操作:
const char*path=“dataset/data.txt”;如果((stream=fopen(path,“r”))==NULL){perror(path);printf(“当前目录:%s\n”,getcwd(NULL,0);exit(1);}
@williampersell我现在明白了。我使用的是CLion。构建后的最终可执行文件在
/cmake build debug
目录中。所以我使用了
。/dataset/data.txt
,它成功了。谢谢!