C - opendir + fopen



我想知道是否可以打开目录,然后与fopen一起从中打开文件。如示例中:

我有一个Maindir,其中有file.txt,所以我想做以下操作:

void openFile(const char * filename)
{
    opendir(MAINDIR);
    fopen(filename, "r");
}
int main()
{
   openFile("file.txt");
   return 0;
}

我知道我可以做: fopen("路径/to/to/main/dir/filename.txt"," r"),但是我想要一些更通用的东西。打开一个目录,然后在该目录内进行每个Fopen工作

谢谢

您可以使用chdir(const char *)更改工作目录,例如:

chdir("/your/path/")

如果您不喜欢与chdir混乱,则可以在要打开文件时构建完整的路径:

void openFile(const char * filename)
{
    char fullpath[MAXPATHLEN];
    sprint( fullpath, "%s/%s", MAINDIR, filename );
    fopen( fullpath, "r" );
}

尽管您可能希望它返回某物。

opendir用于读取目录的内容,这不会改变相对路径的解决方式。要更改相对路径的起点,您必须使用chdir

chdir(MAINDIR);
...fopen(relative_path,...);

opendir()函数无法完成您想要的工作。在可用的地方(不是无处不在,正如POSIX所指定的那样,而不是C),它提供了一种读取目录条目的方法,但它不会影响文件名分辨率,该文件始终是针对当前工作目录(至少)执行的在提供opendir()的实现中。

另一方面,POSIX环境提供chdir()更改当前的工作目录,因此是解决相对文件名的基础。那可以实现您的要求。但是,请注意,工作目录是整个过程的属性。通常是一个更好的主意

相关内容

  • 没有找到相关文章

最新更新