c++comparetchargetmodulefilename

Comparing two TCHAR's with same value results false


I am trying to check my applications path, and if it is not a specified path, then move it. I feel like my code is solid, yet it does not work properly.

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;
    }
}

Even when the file is in the new path it will still result pCheck != xPath

I never get the "New Location" messagebox. When first two messageboxs are displayed, the path's are equal...


Solution

  • You are just comparing the addresses of the arrays (which obviously are never the same). If you want to compare the two strings held in the arrays you should use _tcscmp();

    if(_tcscmp(pCheck, xPath) != 0){