当我尝试在当前目录中打开文件时,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)
代码工作正常。为什么你认为每次写文件目录时都找不到文件?
答案 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