No lea más que el tamaño de la cadena con scanf ()

Edición: para mi clase tengo que usarscanf. Por lo tanto, recomendar otras formas de entrada no es la solución que estoy buscando (si hay alguna que incluya scanf).

Si estoy leyendo información del usuario para un proyecto pequeño (por ejemplo, un juego). Digamos que preguntowould you like to play? Esto aceptaría unyes ono responder. Así que escribo un código simple como este:

#include <stdio.h>

int main(void)
{
     char string[3]; //The max number of letters for "yes".

     printf("Would you like to play?");
     scanf("%s", string);
}

Así que este código simplemente debe pedirles que ingresenyes ono. Estoy configurando la longitud de michar array medir3. De esta manera es lo suficientemente grande como para sosteneryes y tambiénno. Pero si alguien ingresara una entrada inválida comoyesss, Sé cómo comparar la cadena después para manejar un evento de este tipo, pero ¿esto no sobrescribiría técnicamente / posiblemente otras variables locales que he declarado porque se extendería más allá de la longitud de mi matriz? Si es así, ¿hay una manera de manejar esto para restringir 3 caracteres de entrada o algo? Y si no, ¿por qué / cómo se sabe que solo se ingresa para el tamaño de 3?

* Nota: Soy nuevo en C y no pude encontrar mucho sobre esto, así que lo aprecio aunque sea simple. Porque claramente me falta algo. Vengo de un fondo de Java donde esto ni siquiera sería un problema.

Respuestas a la pregunta(4)

Su respuesta a la pregunta