C opendir总是为NULL

时间:2017-11-11 20:52:44

标签: c null opendir

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

2 个答案:

答案 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 "

在这里你将dirpNULL进行了比较,但是你在if语句之后放了一个分号,那就叫dummy if,即条件是否为真,立即声明将始终执行。因此,请在;

之后删除if
if(dirp == NULL)
{
  //some code
}