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"
这里你比较了 dirp
和 NULL
那是正确的但是你在 if
语句之后放了分号,这叫做 dummy if
即条件是否为真, immediate 语句将始终执行。所以删除 if
之后的 ;
if(dirp == NULL)
{
//some code
}
所以我正在进行目录遍历,但我无法让 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"
这里你比较了 dirp
和 NULL
那是正确的但是你在 if
语句之后放了分号,这叫做 dummy if
即条件是否为真, immediate 语句将始终执行。所以删除 if
;
if(dirp == NULL)
{
//some code
}