即使文件存在(由readdir()返回),C中的fopen()也会返回NULL. [英] fopen() in C returns NULL even when file exists (is returned by readdir())
本文介绍了即使文件存在(由readdir()返回),C中的fopen()也会返回NULL.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图打开一个目录,然后打开一个名为"YouTubeSign"的文件,该目录可以正常打开,但是由于某种原因,即使该文件存在,文件上的fopen()也会失败;有什么想法吗?
I am trying to open a directory, and then open a file named "YouTubeSign", directory opens fine, but for some reason fopen() on the file fails even if the file exists; any ideas?
int main(int argc, char **argv)
{
DIR *pdir = NULL;
struct dirent *in_file;
FILE *signature = NULL;
pdir = opendir(argv[1]);
if (pdir == NULL)
{
printf("could not open directory %s", argv[1]);
return -1;
}
while (in_file = readdir(pdir))
{
if (strcmp(in_file->d_name, "YouTubeSign") == 0)
{
signature = fopen(in_file->d_name, "r");
printf("opening youtubesign");
break;
}
}
if (signature == NULL){
printf("could not open file ");
return -1;
}
推荐答案
问题是从readdir
获取的文件名 not 中不包含提供给opendir
的基本路径.
The problem is that the file-name you get from readdir
does not include the base path provided to opendir
.
您必须使用基本路径,路径分隔符和文件名来创建完整路径.
You have to create the full path using the base path, the path separator and the file-name.
这篇关于即使文件存在(由readdir()返回),C中的fopen()也会返回NULL.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文