I have a 2D char pointer array which contains a board game with size 7x7. My array will look like this: 
I have my code to shift elements in one column up 1 position like this:
void userMove(char **boardOfGame, int *sizeOfBoardGame, char typeOfUserTile, int userChoice)
{
int countElement = 6;
char tempElement;
for (int i = 6; i > 0; i--)
{
if (!isspace(boardOfGame[i][userChoice]))
{
countElement--;
}
}
if (typeOfUserTile == '+' || typeOfUserTile == '-' || typeOfUserTile == '|')
{
if (boardOfGame[userChoice][6] == 'X')
{
cout << "A locked tile is preventing your tile from being added. Try to be more careful next turn." << endl;
}
if (boardOfGame[6][userChoice] == ' ')
{
//boardOfGame[6][userChoice] = printf("\033[1;34m%c\033[0m\n",typeOfUserTile);
boardOfGame[6][userChoice] = typeOfUserTile;
}
else if (boardOfGame[6][userChoice] == '+' || boardOfGame[6][userChoice] == '-' || boardOfGame[6][userChoice] == '|')
{
for (int i = countElement + 1; i > countElement; i--)
{
//memmove (&boardOfGame[i-1][userChoice], &boardOfGame[i][userChoice], 1);
boardOfGame[i-1][userChoice] = boardOfGame[i][userChoice];
if (i < 6 && i > 0)
{
boardOfGame[i][userChoice] = boardOfGame[i + 1][userChoice];
}
if (i == 0)
{
boardOfGame[i][userChoice] = boardOfGame[i+1][userChoice];
}
boardOfGame[6][userChoice] = typeOfUserTile;
}
}
}
}
It works properly in the first three rows, but it has issues in the rest. Please help me fix it, I'm kinda stuck on this matter. Anything helps. Thank you.

for (int i = countElement + 1; i > countElement; i--): in practice, it simply meansi = countElement. Is it your intention ?