0
char    tempFilename[256];
wchar_t filename[512];

fprintf(stdout, "Please enter file name/path: \n");
getchar();
fgets(tempFilename, 255, stdin);

MultiByteToWideChar(CP_ACP, 0, tempFilename, -1, filename, strlen(tempFilename)*2);

if((hReadFile = CreateFile(filename, GENERIC_READ , 0, 0, OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE)
{
    fprintf(stdout, "File could not be opened, make sure name is under 256 chars. Error Code - %d.\n", GetLastError());
    return (0);
}

MultiByteToWideChar() が成功することを確認しました。

実際、 C:\users\user_name\desktop\test.txt の代わりに C:\users\user_name\desktop\test.txt のようなパスも試しました

以下を使用して \ を \\ に変換します

while(temp < len )
{
    filename1[cntr1] = tempFilename[temp];
    cntr1 += 1;
    if(tempFilename[temp] == '\\')
    {
        filename1[cntr1] = '\\';
        cntr1 += 1;
    }
    temp += 1;
}

これは \ から \\ まで機能します。どこが間違っているのでしょうか..?

4

1 に答える 1