One possible problem with this method is that what happens if the user decides to enter 'e' twice for the sake of it?forget about returning a value from checkchar, and pass a pointer to correctguess to the function instead, in order to increment the counter. Doing this will also allow you to compare correctguess to wordlength without any adjustments - I was mistaken before when I said that the 'e' guess would make correctguess a couple less than wordlength.
number of 'e's in cheese == 3;
first run through checkchar with 'e',
correctguess == 3;
second run through checkchar with 'e',
function still checks and finds 3 'e's in the word2bguessed,
as a result,
correctguess == 6 (which also means correctguess == wordlength)
Here is an alternative method, return the number of '*'s in the usercorrect string...
Assuming you initialize the number of '*'s in the usercorrect to == the number of characters in the word2bguessed, the number of '*'s in the usercorrect will be equal to the number of characters that the user has yet to guess correctly.