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 -%sn",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 -%sn",strerror(errno) );
    return 1;
}

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

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

手册页说:">opendir(( 函数返回一个指向 direc-tory 流的指针。 出错时,返回 NULL">

在这里,您将dirp与正确的NULL进行了比较,但是您在语句后加上了分号if这称为dummy if即无论条件是否为真,即时语句将始终执行。因此,请在if后取下;

if(dirp == NULL)
{
  //some code
}

相关内容

  • 没有找到相关文章

最新更新