如何使用fopen在当前目录中打开文件夹内的文件?

8

我想打开当前工作目录中的一个文件夹内的文件,就像这样:

fopen("/folder/file.txt","r");

我无法以这种方式完成,我得到一个没有这样的文件或目录错误。

我该如何正确地做这件事?

4个回答

12
你需要提到这是当前目录。尝试这样做,

fopen("./folder/file.txt","r");

或者

fopen("folder/file.txt","r");

如果你像这样提到 /folder/file.txt 它会从根目录开始搜索文件夹,这就是出现错误的原因。


2

尝试:

fopen("./folder/file.txt","r"); /* dot means the directory itself */

或者

fopen("folder/file.txt","r"); /* without the first backslash */

-1
似乎如果我移除第一个反斜杠,它就能工作。
像这样:
fopen("folder/file.txt","r");

奇怪。

7
这并不“怪异”,这很正常。 - Matt
5
当你说"/folder/file.txt"时,并不奇怪,这个函数会在根目录(UNIX中)下查找文件夹 "folder"。 - holgac
4
一点也不奇怪。如果您在文件路径开头加上斜杠,这意味着您是从根目录开始查找,而不是从当前目录开始。 - mcleod_ideafix

-1
int folder;
char* foldername="Ricci";
folder = mkdir(foldername);
DIR* opendir(foldername);
printf("folder successfully created\n");
FILE* fp;
fp = fopen("Ricci/database.txt","a");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接