(标题已更新以表明 _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);
}
}
有没有办法使上述程序适用于 Visual Studio 6?
编辑:TEMP_PATH 是 C:\tmp\汉字。_wgetenv 显示...