所以我正在进行目录遍历,我无法让opendir以我想要的方式工作。它总是无法打开我发送它的目录,它给出了一些未知的错误。我通常传入argv [1],但我放弃了,只是开始硬编码路径。
char *dest = NULL;
char *filePath = ".";
char *newPath = NULL;
DIR *dirp;
struct dirent *dp;
int errno;
dirp = opendir("/home/cs429/Desktop/test");
struct stat path_stat;
if(dirp == NULL);
{
// Error Handling
fprintf(stderr, "Error failed to open input directory -%s\n",strerror(errno) );
return 1;
}
有没有人看到我可以做什么来获得NULL?我也在gdb中得到这个: ../sysdeps/posix/opendir.c:没有这样的文件或目录。
答案 0 :(得分:1)
该行
if(dirp == NULL);
什么都不做,无论dirp
的值如何,都会执行下一个代码块。
请删除;
,以便代码
if(dirp == NULL)
{
// Error Handling
fprintf(stderr, "Error failed to open input directory -%s\n",strerror(errno) );
return 1;
}
答案 1 :(得分:0)
首先检查给定路径是否确实存在。
dirp = opendir("/home/cs429/Desktop/test");
手册页说" opendir()函数返回指向目标流的指针。出错时,返回 NULL "
在这里你将dirp
和NULL
进行了比较,但是你在if
语句之后放了一个分号,那就叫dummy if
,即条件是否为真,立即声明将始终执行。因此,请在;
if
if(dirp == NULL)
{
//some code
}