fopen_s(&fp, "FileName.txt" ,w+);当我给出文件的相对路径时不起作用,并且仅在给出绝对路径时才有效

fopen_s(&fp,"FileName.txt",w+); not working when I give relative path of the file & works only when absolute path is given

本文关键字:路径 不起作用 有效 相对 txt FileName 文件 fopen fp      更新时间:2023-10-16

我发现 API ,

_tfsopen()

当我只提供相对文件路径(只是文件名)时不起作用

fopen_s(&fp,"FileName.txt",w+);

但是,如果我给出txt文件的绝对路径,那么它就可以正常工作。所以问题在于获取当前工作目录(CWD)。如何获取 CWD 并使此 API 正常工作?

此 API 定义存在于:

C:Program Files (x86)Microsoft Visual Studio 9.0VCcrtsrcfopen.c

这就是 fopen.c 所拥有的:

errno_t __cdecl _tfopen_s (
        FILE ** pfile,
        const _TSCHAR *file,
        const _TSCHAR *mode
        )
{
    _VALIDATE_RETURN_ERRCODE((pfile != NULL), EINVAL);
    *pfile = _tfsopen(file, mode, _SH_SECURE);  // ERROR IS OCCURING AT THIS LINE. IT's NOT ABLE TO OPEN THE FILE.
    if(*pfile != NULL)
        return 0;
    return errno;
}

这段代码让你得到当前的工作目录:

#include <direct.h>
char cwd[MAX_PATH_SIZE];
_getcwd(cwd, MAX_PATH_SIZE);