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

时间:2015-05-16 08:35:04

标签: c file directory

当我尝试在当前目录中打开文件时,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)

代码工作正常。为什么你认为每次写文件目录时都找不到文件?

1 个答案:

答案 0 :(得分:0)

这是因为您的工作目录没有名为 open("/child1/openthis.c", O_RDONLY) 的目录。

  

open("child1/openthis.c", O_RDONLY)应该是   child1,它的工作原理如下:

     

如果您的工作目录是child1,它将搜索工作目录中的openthis.c文件夹。如果找到,它将在child1/child1内搜索open("child1/openthis.c", O_RDONLY),然后将其打开。

     

"child1/child1/openthis.c"搜索open("openthis.c", O_RDONLY)   "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 位于工作目录中。

您的目录可能是这样的:

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface ViewController : UIViewController<CLLocationManagerDelegate>
@property (weak, nonatomic) IBOutlet UILabel *lblLatitude;
@property (weak, nonatomic) IBOutlet UILabel *lblLongitude;
@property (weak, nonatomic) IBOutlet UILabel *lblAddress;
@property (strong, nonatomic) CLLocationManager *locationManager;

@end