比较两个具有相同值的TCHAR会导致错误

Jos*_*ine 5 c++ compare tchar getmodulefilename

我正在尝试检查我的应用程序路径,如果它不是指定的路径,则移动它.我觉得我的代码很稳定,但它无法正常工作.

TCHAR pCheck[MAX_PATH];
TCHAR xPath[MAX_PATH];

GetModuleFileName(NULL,xPath,MAX_PATH);

if(SHGetSpecialFolderPath(HWND_DESKTOP, pCheck, CSIDL_DESKTOP, FALSE)){
    wcscat(pCheck,L"\\NewFile.exe");
    MessageBox(NULL,pCheck,NULL,NULL);
    MessageBox(NULL,xPath,NULL,NULL);
    if(pCheck!=xPath){  
        CopyFile(xPath,pCheck,0);
        ShellExecute(0,L"open",pCheck,NULL,NULL,SW_SHOW);
        return 0;
    }else{
        MessageBox(NULL,L"New Location",NULL,NULL); 
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

即使文件在新路径中,它仍然会产生pCheck!= xPath

我从来没有得到"新位置"消息框.当显示前两个消息框时,路径是相等的...

joh*_*ohn 9

您只是比较阵列的地址(显然从不相同).如果要比较数组中保存的两个字符串,则应使用_tcscmp();

if(_tcscmp(pCheck, xPath) != 0){ 
Run Code Online (Sandbox Code Playgroud)

  • 注意:“_tcsicmp”用于不区分大小写的比较。 (3认同)