我想要獲取所有文件名用戶選擇。返回字符串的格式如下: 用戶選擇的文件夾| filename1 | filename2 ......wcscat_s字符串不爲空終止
這裏是我的代碼,用於創建多選對話框,獲取選定的文件名,並將它們複製到緩衝區變量中。文件名由「|」分隔
HWND hDlg = NULL;
wchar_t* buffer = new wchar_t[32768];
void ShowDialog()
{
OPENFILENAME ofn;
wchar_t szFile[32768];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hDlg;
ofn.lpstrFile = (wchar_t*)szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_EXPLORER;
if(GetOpenFileName(&ofn) == TRUE)
{
if(szFile[ofn.nFileOffset-1] != '\0')
{
wcscpy_s(buffer,sizeof(szFile),szFile);
}
else
{
//Multi-select
wchar_t* p= szFile;
int i =0;
while(*p)
{
wchar_t* temp = new wchar_t[1024];
//Copy p into temp
wcscpy_s(temp,1024,p);
if(i==0)
{
//copy folder name into buffer
wcscpy_s(buffer,1024,temp);
}
else
{
//cat file name with buffer
wcscat_s(buffer,1024,temp);
}
//seperated folder name and files name with "|"
wcscat_s(buffer,2,L"|\0");
i++;
p += lstrlen(p) + 1;
}
}
}
}
當調試這個代碼,運行時間錯誤: 「的字符串不是空終止」 時,會出現在線路碼:wscat_s(緩衝液,2,L 「| \ 0」);
你能否向我解釋爲什麼以及如何解決它。
感謝您的幫助
使用C++字符串不是更容易嗎? –
@DavidHeffernan:是的,我會試試看。 – Beginner