Читайте не больше, чем размер строки с помощью scanf ()

Редактировать: для моего класса я должен использоватьscanf, Поэтому рекомендации по другим способам ввода данных - это не то решение, которое я ищу (если есть одно, которое использует scanf).

Если я читаю пользовательский ввод для небольшого проекта (например, игры). Допустим, я спрашиваюwould you like to play?  Это приметyes или жеno ответ. Поэтому я пишу простой код, подобный этому:

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

Так что этот код должен просто попросить их ввестиyes или жеno, Я устанавливаю длину моегоchar array по размеру3, Таким образом, он достаточно большой, чтобы держатьyes а такжеno, Но если кто-то введет неверный ввод, такой какyesssЯ знаю, как сравнить строку впоследствии, чтобы обработать такое событие, но не будет ли это технически / возможно перезаписывать другие локальные переменные, которые я объявил, потому что они будут выходить за пределы длины моего массива? Если так, есть ли способ справиться с этим, чтобы ограничить 3 входных символа или что-то? И если нет, то почему / как он знает, чтобы вводить только для размера 3?

* Примечание: я новичок в C, и я не могу найти много по этому вопросу, поэтому я ценю это, даже если это просто. Потому что я явно что-то упускаю. Я родом из Java, где это даже не будет проблемой.

Ответы на вопрос(4)

Ваш ответ на вопрос