我编写了自己的 find() 函数。当我做:
./myown $HOME/Documents test.txt
我得到:
/Users/CJ/Documents/test/test.txt
/Users/CJ/Documents/test/test1/test.txt
/Users/CJ/Documents/test/test2/test.txt
但是,当我这样做时:
./myown $HOME test.txt
我得到:
getcwd error
我的 getcwd 代码在这里,它在一个辅助函数中:
findit(*directory, *pattern){
...
if(getcwd(cwd, 2048+1) == NULL){
fprintf(stderr, "getcwd error\n");
exit(1);
}
...
}
我该如何解决这个问题?
编辑:closedir()
解决这个问题,但现在还有另一个问题。当我这样做时结果是一样的:./myown $HOME/Documents test.txt
但是当我以另一种方式做时,我得到:stat error
`
struct stat mode;
if(stat(entry->d_name, &mode) == -1){
fprintf(stderr, "stat error\n");
continue;
}`
我没有在代码的其他任何地方使用 stat error 。
这也很有帮助,这就是我使用 open 的方式
DIR *dir
dir = opendir(".");
错误在 readdir() 中。