【发布时间】:2012-06-18 09:18:54
【问题描述】:
从当前路径遍历并搜索文件时,我在定位文件时遇到问题。
我怀疑 path 是由于 chdir 而导致的,在下一个代码中:
相关的文件夹是:
- 12,13,14,12是父目录
- 13 内 12 , 14 内 13
- david1.txt 内 14
- get_current_dir_name()是Linux函数,不是我的
我从Desktop 运行可执行文件,就像这样(这里是printf-s 用于尝试定位问题):
// doesn't work
a@ubuntu:~/Desktop$ ./exer4 12 david1.txt
Current path is :12
Current path is :/home/a/Desktop/12/13
Current path is :/home/a/Desktop/12/13/14
//////////////////////////////////////////////////
// doesn't work
a@ubuntu:~/Desktop$ ./exer4 12/13 david1.txt
Current path is :12/13
Current path is :/home/a/Desktop/12/13/14
////////////////////////////////////////////////
// doesn't work
a@ubuntu:~/Desktop$ ./exer4 12/13/14 david1.txt
Current path is :12/13/14
如果我删除这些行:
chdir(path); // the problem is probably here
strcpy(path, get_current_dir_name()); // and here
然后每个只涉及单个库名称的查询都有效,例如:
// works :
a@ubuntu:~/Desktop$ ./exer4 12 david1.txt
Current path is :12
Current path is :12/13
File found!
12/13/14/david1.txt-rw-rw-r-- 1 1000 1000 0 2012-06-17 08:10
Current path is :12/13/14
////////////////////////////////////////////////////////////
// works
a@ubuntu:~/Desktop$ ./exer4 12/13 david1.txt
Current path is :12/13
File found!
12/13/14/david1.txt-rw-rw-r-- 1 1000 1000 0 2012-06-17 08:10
Current path is :12/13/14
////////////////////////////////////////////////////////////
// Doesn't work
a@ubuntu:~/Desktop$ ./exer4 12/13/14 david1.txt
Current path is :12/13/14
知道我在这里做错了什么吗?我尝试过无数次更改,但没有任何修复。谢谢
【问题讨论】:
-
如果您认为有问题,为什么不检查返回码。
-
显示其余代码,否则很难分辨。
-
如何检查文件是否存在于目录中?给我们一些代码来定位错误
标签: c file ubuntu relative-path absolute-path