2016-01-09 5 views
-3

Если я объявляю массив из n элементов, а при сканировании элементов с использованием одиночного цикла, я заметил, что количество введенных элементов может быть больше n (если я продолжаю нажимать SPACE после каждого элемента), но когда я печатаю массив, он дает только первые n элементов. Я использую блоки кода.Сканирующие элементы массива в c

Почему?

enter image description here

+0

потому что 'for (i = 0; i BLUEPIXY

+0

, но при сканировании после n-й записи он не должен сканировать дальше, правильно? –

+0

Цикл выполняется n раз. Больше нет. – BLUEPIXY

ответ

0

можно ввести несколько входов, нажав пространство, но для завершения принятия входных Scanf требования «Enter», чтобы быть нажата. поэтому при нажатии enter scanf завершается.

Когда вы используете цикл for для сканирования, ваш первый scanf выполняется, и он должен принимать первый вход, но вы предоставляете несколько входов (может быть или не быть больше n), используя пробел. а затем, когда вы нажимаете enter, scanf останавливается, принимая вход, назначает значение и завершает работу. Затем вы выполняете второй scanf (в цикле), теперь у вас уже есть неиспользуемые входы в очередь. поэтому вход для этого scanf извлекается из входного буфера вместо этого, и вы не беспокоитесь о других входах, это происходит до тех пор, пока цикл for не завершится, или ваш входной буфер не станет пустым, в этом случае вас попросят ввести дополнительные данные ,