1

(問題が_wgetenvにあったことを示すためにタイトルが更新されました)

次のプログラムは 、変数に日本語のテキストを含むパスがある場合、エラー123で失敗します。Visual Studio 2005でコンパイルすると、同じプログラムが正常に動作します。

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int  main  (int argc, char  **argv ) {
        wchar_t *wcharVarName= L"TEMP_PATH";
        wchar_t *longTempPath= _wgetenv(wcharVarName);

        MessageBoxW( NULL,  longTempPath, longTempPath, MB_OK | MB_ICONERROR);

        int wlength = GetShortPathNameW(longTempPath,0,0);
        int error= GetLastError();
        if ( wlength == 0 ) {
                char buf[1000];
                sprintf ( buf, "error code %d",error);
                MessageBox( NULL, "FAIL", buf, MB_OK | MB_ICONERROR);
        }
        else {
             MessageBoxW( NULL, longTempPath, wcharVarName, MB_OK | MB_ICONERROR);
        }

}

上記のプログラムをVisualStudio6で動作させる方法はありますか?

編集:TEMP_PATHはC:\tmp\漢字でした。_wgetenvは...を示しています

ここに画像の説明を入力してください

4

1 に答える 1

2

何らかの理由で、への呼び出し_wgetenvはVS6で目的の値を返していません。?記号は、エンコーディング変換が失敗したことを示します。

簡単な回避策は、GetEnvironmentVariable代わりに使用することです。

于 2012-05-03T11:45:16.587 に答える