edvinson
asked on
String compare not working
I worked so hard to get this program to work, and on the very last important task, it is failing.
I simply need to compare two strings. It's not erroring, but not working.
Can anyone show me my error?
I simply want to see if szCorrect is equal to "eeheqij"
I simply need to compare two strings. It's not erroring, but not working.
Can anyone show me my error?
I simply want to see if szCorrect is equal to "eeheqij"
#include <windows.h>
#include "resource.h"
#include <string>
// +---------------------------------------------------------------------------+
// | Simple Character Encryption |
// +---------------------------------------------------------------------------+
// | main.cpp |
// | |
// | This program demonstrates how to encrypt and decrypt using |
// | simple character substitution |
// +---------------------------------------------------------------------------+
// | Acknowledgements: |
// | |
// | Authors: John Tropeano |
// | |
// +---------------------------------------------------------------------------+
//---------------------------------------------------------------------------
// Function Protypes Defined
//---------------------------------------------------------------------------
LRESULT CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
//---------------------------------------------------------------------------
// Define Global Variables
//---------------------------------------------------------------------------
HWND hWnd;
//---------------------------------------------------------------------------
// WinMain: Application Entry Point
//---------------------------------------------------------------------------
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),
hWnd, reinterpret_cast<DLGPROC>(DlgProc));
return FALSE;
}
//---------------------------------------------------------------------------
// Dialog Procedure
//---------------------------------------------------------------------------
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
/* Local Variables */
char szbuffer[255], szbuffer2[255];
char userCombination[80] = {'/0'};
// This is the word 'crackme' encrypted!!
std::string encrypted("eeheqij");
int stringLength;
// The word "crackme" encrypted = e e h e q i j
// 1 2 3
// 01234567890123456789012345678901234
char keyPhrase[] = "thequickbrownfoxjumpsoverthelazydog";
char cypherPhrase[] = "packmyboxwithfivedozenliguorjugs";
char szCorrect[] = "eeheqij";
switch(Msg)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(wParam)
{
case IDOK:
// Move users answer to szbuffer
GetDlgItemText(hWndDlg, IDC_EDIT1, szbuffer, 80);
// Get length of user string entered
stringLength = strlen(szbuffer);
// Loop through every character
for(int xx=0; xx<stringLength; xx++){
// Isolate single character
char currentCharacter = szbuffer[xx];
// Locate character in cypherPhrase
std::string strCypherPhrase(cypherPhrase);
// Get Position of current character in cypherPhrase
// Note: The character should always be found
// because every letter is in cypherPhrase
size_t found = strCypherPhrase.find(currentCharacter);
// Now get keyPhrase[FOUND] and add to final userCombination buffer
userCombination[xx] = keyPhrase[found];
// Move current encrypted character to buffer2 ( for MessageBox debugging )
//wsprintf(szbuffer2,"%c", keyPhrase[found]);
//MessageBox ( NULL, szbuffer2, "Encrypted Character is...", MB_OK | MB_ICONINFORMATION );
}
// Debug Encrypted String
// Should output: e e h e q i
//MessageBox ( NULL, userCombination, "Encrypted String Debug", MB_OK | MB_ICONINFORMATION );
// Now check to see if they entered the correct answer
// if userCombination == 'eeheqij' they were CORRECT
// NOT WORKING
//--------------------------------------------------------------------------------------
if(strcmp(userCombination,szCorrect)==0){
MessageBox ( NULL, "CORRECT", "You Entered the correct password!!!", MB_OK | MB_ICONINFORMATION );
}
//--------------------------------------------------------------------------------------
EndDialog(hWndDlg, 0);
return TRUE;
}
break;
}
return FALSE;
}
//---------------------------------------------------------------------------
// Application Functions
//---------------------------------------------------------------------------
// NONE YET
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I figured out how to dump vars
I have a problem with my variable userCombination
Here is my WATCH output of that variable:
"eehequj", '\0' <repeats 72 times>
I see the correct value there, but for some reason it repeats??? I see why strcmp is not working, but why is that value repeating like that?
I have a problem with my variable userCombination
Here is my WATCH output of that variable:
"eehequj", '\0' <repeats 72 times>
I see the correct value there, but for some reason it repeats??? I see why strcmp is not working, but why is that value repeating like that?
ASKER
I figured this out. Simple mistake on my part by comparing the wrong value to user input.
ASKER
I've requested that this question be closed as follows:
Accepted answer: 0 points for edvinson's comment #a39256655
for the following reason:
Simple typo in code was the problem
Accepted answer: 0 points for edvinson's comment #a39256655
for the following reason:
Simple typo in code was the problem
Which I believe I probably still helped you to find this typo error!?
ASKER
always a great help to me mccarl, thx.
Not a problem, glad to help!
ASKER