This is mostly out of curiosity to why this is happening as it doesn't matter in my case. If I type in an invalid number it properly goes to the repeat label and asks me to enter a number again, but if i enter in a character like 'f' it will loop endlessly and not stop. Why is this?
The array and all variables here are of type int.
    repeat: 
    printf("Enter number of available space, you are %c: ", userXO);
    scanf("%d", user);
    switch (*user)
    {
        case 1: if (spaces[0][0] == 49){ spaces[0][0] = userXO;}else goto repeat; break;
        case 2: if (spaces[0][1] == 50){ spaces[0][1] = userXO;}else goto repeat; break;
        case 3: if (spaces[0][2] == 51){ spaces[0][2] = userXO;}else goto repeat; break;
        case 4: if (spaces[1][0] == 52){ spaces[1][0] = userXO;}else goto repeat; break;
        case 5: if (spaces[1][1] == 53){ spaces[1][1] = userXO;}else goto repeat; break;
        case 6: if (spaces[1][2] == 54){ spaces[1][2] = userXO;}else goto repeat; break;
        case 7: if (spaces[2][0] == 55){ spaces[2][0] = userXO;}else goto repeat; break;
        case 8: if (spaces[2][1] == 56){ spaces[2][1] = userXO;}else goto repeat; break;
        case 9: if (spaces[2][2] == 57){ spaces[2][2] = userXO;}else goto repeat; break;
        default: goto repeat; break;
}
 
    