打开二进制文件

时间:2016-05-21 20:29:07

标签: c fopen

在我的一个练习中,由于C,我必须打开一个文件夹。我使用dirent库执行此操作,之后我成功向屏幕显示文件夹中每个文件的名称。但现在,我想每次打开已经打印到屏幕的当前文件。所以我用fopen做这个,但每次我的fopen返回NULL我能做什么才能每次打开当前文件。 谢谢你!

这是我的代码:

void OpenDirectory(char *Folder, char *Virus){
DIR * dir = NULL;
struct dirent* CurrentFile = NULL;

dir = opendir(Folder);
if (dir == NULL){
    perror("");
}
else
{
    while ((CurrentFile = readdir(dir))!= NULL)
    {
        if (!strcmp(CurrentFile->d_name, ".") || !strcmp(CurrentFile->d_name, ".."))
        {
            // Don't do anything
        }
        else
        {
            printf("Current file is : %s\n", CurrentFile->d_name);
            Myfile(CurrentFile->d_name);
        }
    }
}


}

void Myfile(FILE* File1){
File1 = fopen(File1, "rb");
printf("File is : %s", File1);
if (File1 == NULL)
{
    printf("The file source doesn't exist !\n");
}
else
{
    printf("Welcome");
}
}

1 个答案:

答案 0 :(得分:1)

该目录包含文件名。

所以第一个文件名可能是foo,那就是你将从dirent中得到什么。那么你试着打开它,有效地做fopen("foo", "r");

但这意味着"在当前工作目录中打开名为foo 的文件"。由于该文件位于某个子目录中,因此无法找到它。

每次开始处理新目录时,一个解决方案是cwd到目录。这很好;完成后,挑战是返回父目录。