gpt4 book ai didi

c - 打开二进制文件

转载 作者:行者123 更新时间:2023-11-30 15:08:24 25 4
gpt4 key购买 nike

在我的一项练习中,我必须通过 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");
}
}

最佳答案

该目录包含文件名。

因此第一个文件名可能是 foo,这就是您将从 dirent 中得到的内容。然后你尝试打开它,有效地执行 fopen("foo", "r");

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

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

关于c - 打开二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37367666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com