2012-03-28 66 views
1

我試圖檢索使用C語言文件的完整路徑,但_fullpath函數總是返回我的諸如C:\Windows\system32\test.txt代替C:\Users\me\Documents and settings\test.txtÇ_fullpath()返回壞路

這裏的路徑是我的代碼至目前爲止寫到:

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); 
    } 
} 

請問有人對這個問題有什麼想法嗎?

謝謝!

+0

什麼樣的電腦你使用32位或64? – L7ColWinters 2012-03-28 15:19:06

+0

我在W7 32位 – 2012-03-28 15:21:00

回答

1

,你必須首先設置CWD到該文件所在的文件夾。因爲這是用來構建文件完整路徑的文件夾。

這意味着,你必須_fullpath之前調用_chdir

0

完整路徑轉換爲相對路徑(相對於當前目錄)的完整路徑。如果要將其轉換爲完整路徑,則需要將當前目錄設置爲用於枚舉文件的目錄。