首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C opendir始终为空

C opendir始终为空
EN

Stack Overflow用户
提问于 2017-11-11 20:52:44
回答 2查看 2.8K关注 0票数 0

因此,我正在进行目录遍历,并且无法使opendir按我所希望的方式工作。它总是无法打开我发送给它的目录,它会给出一些未知的错误。我通常通过argv1,但我放弃了,只是开始了硬编码路径。

代码语言:javascript
复制
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;
}

有人知道我能做些什么来获得空值吗?我还在gdb:./sysdeps/posix/opendir.c:没有这样的文件或目录中得到了这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-11 21:00:27

线

代码语言:javascript
复制
if(dirp == NULL);

什么也不做,下一个代码块总是被执行,而不管dirp的值如何。

请删除;,以便代码是

代码语言:javascript
复制
if(dirp == NULL)
{
    // Error Handling
    fprintf(stderr, "Error failed to open input directory -%s\n",strerror(errno) );
    return 1;
}
票数 1
EN

Stack Overflow用户

发布于 2017-11-11 22:41:03

首先,检查给定路径是否确实存在。

代码语言:javascript
复制
dirp = opendir("/home/cs429/Desktop/test");

手册页说:“opendir()函数返回一个指向direc-tory流的指针。

在这里,您将dirp与正确的NULL进行了比较,但是您在if语句之后插入了分号,这称为dummy if。也就是说,无论条件是否为真,立即语句都将始终执行。因此,在;之后删除if

代码语言:javascript
复制
if(dirp == NULL)
{
  //some code
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47242665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档