No recuerdo donde leí eso y me gustó la flexibilidad de eso, leí que tienen "asociatividad" y que un buen compilador de C debería de soportar esto 3[array];
No hay manera de limitar la entrada a n carácteres, lo único que puedes hacer es encerrar al usuario en un ciclo hasta que haga lo que tú quieres, para ello tienes que contar los caracteres, y sino se cumple la condición le vuelves a pedir la entrada.
Tienes que corregir eso, luego si quieres trabajar como programador no vas a tener una buena imagen, tu código se verá horrendo aún pudiendo ser muy eficiente.