【问题标题】:C _fullpath() returning bad pathC _fullpath() 返回错误路径
【发布时间】:2012-03-28 15:10:41
【问题描述】:

我正在尝试使用 C 语言检索文件的完整路径,但 _fullpath 函数总是返回一个路径,例如 C:\Windows\system32\test.txt 而不是 C:\Users\me\Documents and settings\test.txt

这是我目前写的代码:

char lszValue[255];
DWORD dwType=REG_SZ;
DWORD dwSize=255;
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
char full[255];

if ((RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\MY\\TestReg", &hKey)) == ERROR_SUCCESS)
{
    if ((RegQueryValueEx(hKey, TEXT("path"), NULL, &dwType,(LPBYTE)&lszValue, &dwSize)) == ERROR_SUCCESS)
    {
        if ((hFind = FindFirstFile(strcat(lszValue, "/*"), &FindFileData)) == INVALID_HANDLE_VALUE)
            WriteInLogFile("ERROR: FindFirstFile");
        do
        {
            if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                if (!_fullpath(full, FindFileData.cFileName, 255))
                WriteInLogFile("ERROR: _fullpath\r\n");
                WriteInLogFile(full);
            }
        } while (FindNextFile(hFind, &FindFileData) != 0);
    }
}

请问有人知道这个问题吗?

谢谢!

【问题讨论】:

  • 你用的是32位还是64位的电脑?

标签: c visual-studio-2010 winapi path


【解决方案1】:

您必须先将 CWD 设置为文件所在的文件夹。因为那是用来构建文件完整路径的文件夹。

这意味着,您必须在 _fullpath 之前调用 _chdir

【讨论】:

    【解决方案2】:

    完整路径将相对路径(相对于当前目录)转换为完整路径。如果要将文件转换为完整路径,则需要将当前目录设置为用于枚举文件的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      相关资源
      最近更新 更多