gpt4 book ai didi

c - 相对路径/绝对路径查询在当前目录中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:34 25 4
gpt4 key购买 nike

从当前路径遍历并搜索文件时,我在定位文件时遇到了问题。

我怀疑 path 是由于 chdir 而造成的,在下一个代码中:

关联的文件夹是:

  • 12,13,14 , 12为父目录
  • 13 内 12 , 14 内 13
  • 14 内的 david1.txt
  • 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

知道我在这里做错了什么吗?我试过无数次改变,但没有解决。谢谢

最佳答案

在执行 strcpy(path, get_current_dir_name()) 时,您不会检查是否超出缓冲区。
如果 pathargv[1],则说明您正在溢出堆栈。
我的猜测是您超出了文件名 (argv[2]),然后您开始寻找错误的名称(但没有找到)。

关于c - 相对路径/绝对路径查询在当前目录中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11079953/

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