Ne pas lire plus que la taille de la chaîne avec scanf ()

Edit: pour ma classe, je dois utiliser scanf. Donc de recommander d'autres moyens d'entrée n'est pas la solution, je suis à la recherche d' (si il en est un qui consiste à scanf).


Si je suis de la lecture dans la saisie de l'utilisateur pour un petit projet (par exemple, un jeu). Disons que je demande would you like to play? Ce serait accepter une yes ou no réponse. J'ai donc écrire du code simple comme ceci:

#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);
}

Donc ce code doit simplement leur demander pour l'entrée yes ou no. Je suis réglage de la longueur de mon char array à la taille 3. De cette manière, il est assez grand pour contenir yes et aussi no. Mais si quelqu'un venait à entrer dans la saisie de données incorrectes comme yesssje sais comment comparer la chaîne par la suite pour gérer un tel événement, mais ne serait-ce pas techniquement/éventuellement remplacer d'autres variables locales que j'ai déclaré, parce que ce serait s'étendre en dehors de la longueur de mon tableau? Si oui, est-il un moyen de gérer cela à restreindre 3 caractères d'entrée ou de quelque chose? Et si non, pourquoi/comment sait-elle seulement à l'entrée de la taille de 3?

*Note: je suis nouveau sur le C et je ne pouvais pas trouver beaucoup sur ce que j'apprécie, même si c'est simple. Parce que je suis clairement en manque de quelque chose. Je viens de java contexte où ce ne serait pas un problème.

source d'informationauteur MrHappyAsthma