gpt4 book ai didi

c - 当文件名及其目录写入时,c中的open函数找不到文件

转载 作者:行者123 更新时间:2023-11-30 20:38:10 25 4
gpt4 key购买 nike

当我尝试打开当前目录中的文件时,open 函数工作正常,但如果我在 open 函数中提及文件的目录及其名称作为参数,则会发生找不到文件错误。另外,当我尝试使用 open 函数打开另一个目录中的文件时,终端打印没有这样的文件或目录。我找不到文件的目录写入有什么问题。

现在我正在“child1”目录中工作,我想打开“openthis.c”文件。这是我要执行的代码。

#include<fcntl.h>
#include<stdlib.h>
#include<sys/stat.h>
int main(){
int fd;
if((fd = open("/child1/openthis.c", O_RDONLY) < 0){
perror("open");
exit(1);}
return 0;
}

这不起作用,但如果我写

open("openthis.c", O_RDONLY)

而不是

open("/child1/openthis.c", O_RDONLY)

代码运行良好。为什么我每次写文件所在的目录,都找不到该文件?

最佳答案

这是因为您的工作目录中没有名为 child1的目录。

open("/child1/openthis.c", O_RDONLY) should beopen("child1/openthis.c", O_RDONLY), and it works like this:

If your working directory is child1, it will search for child1 folder inside the working directory. If found, it will search for openthis.c inside child1/child1, then opens it.

open("child1/openthis.c", O_RDONLY) searches for "child1/child1/openthis.c"open("openthis.c", O_RDONLY) searches for "child1/openthis.c"

假设 child1 是您的工作目录,openthis.c 是其中唯一的文件,没有其他文件夹/文件。 child1/child1/openthis.c 永远不会存在,除非您在工作目录(即 child1)内创建一个名为 child1 的新文件夹并添加openthis.c 位于其中。

您永远无法访问不存在的文件。

open("child1/openthis.c", O_RDONLY) 如果您的目录树如下所示,则可以正常工作:

child1
L child1
L openthis.c

open("openthis.c", O_RDONLY) 可以工作,因为 openthis.c 位于您的工作目录中。

你的目录可能是这样的:

child1
L openthis.c


关于c - 当文件名及其目录写入时,c中的open函数找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com