C opendir 始终为 NULL

C opendir always NULL

所以我正在进行目录遍历,但我无法让 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: 没有那个文件或目录。

if(dirp == NULL);

什么都不做,下一个代码块总是被执行,不管dirp.

的值是多少

请删除 ; 所以代码是

if(dirp == NULL)
{
    // Error Handling
    fprintf(stderr, "Error failed to open input directory -%s\n",strerror(errno) );
    return 1;
}

首先检查给定路径是否真的存在。

dirp = opendir("/home/cs429/Desktop/test");

手册页说 "The opendir() functions return a pointer to the direc‐tory stream. On error, NULL is returned"

这里你比较了 dirpNULL 那是正确的但是你在 if 语句之后放了分号,这叫做 dummy if 即条件是否为真, immediate 语句将始终执行。所以删除 if

之后的 ;
if(dirp == NULL)
{
  //some code
}