You aren't initialising x on each loop.
I might be wrong because it's been a while but don't diagonally adjacent squares also count?
I have a feeling that using the gameR matrix is probably causing the wrong behaviour too but it's too difficult to tell without seeing the rest of your code. Either way you can replace those comparisons by only using your gameC matrix (I'm assuming from context that gameC is the previous generation).
Also you need to make provisions for when you are at the edges of your matrix. For example on the very first iteration of your loop you will enounter if (gameR[0][0] == gameC[0][-1] ){ which is a bad array index.
It seems unnecessary to initalise t and u in each loop. To be honest it seems unnecessary to initialise these at all. I would make '_' and '*' preprocessor macros (e.g #define EMPTY '_').
Your code for assigning the character to the matrix square can be greatly simplified. You only need one case for when it is not emtpy ( when x is either 2 or 3 ) and another for when it is empty (all other cases).