Читайте не больше, чем размер строки с помощью scanf ()
Редактировать: для моего класса я должен использоватьscanf
, Поэтому рекомендации по другим способам ввода данных - это не то решение, которое я ищу (если есть одно, которое использует scanf).
Если я читаю пользовательский ввод для небольшого проекта (например, игры). Допустим, я спрашиваюwould you like to play?
Это приметyes
или жеno
ответ. Поэтому я пишу простой код, подобный этому:
#include
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, где это неЭто даже не проблема.