Re[3]: Использование printf() и scanf()
От: Аноним  
Дата: 13.06.05 08:37
Оценка:
Здравствуйте, ansi, Вы писали:

A>Вообще, как работает scanf: с клавиатуры читается буфер, далее из этого буфера читается значение пока:

A>[list]
A>
  • не встретим конец буфера,
    A>
  • не встретим недопустимый символ,
    A>
  • не встретим пробел,
    A>
  • полностью не считаем значение.
    Позиция в буфере запоминается и равна последнему считанному символу.

    A>Например, если ты вызвал scanf("%c"), а я ввел "yes", то scanf запишет в буфер "yes". Далее в твою переменную он запишет символ 'y'. Буфер теперь содержит "es".


    A>Далее, при следующем вызове scanf она смотрит, есть ли у нее что-нибудь в буфере, и если есть, то ввод с клавиатуры не производится, а очередной токен читается из этого буфера.

    A>В нашем случае буфер содержит "es". И если ты сейчас вызовешь scanf("%f"), то на первом же символе 'e' функция заматерится и вернет управление, в твоей же переменной останется какой-то мусор (скорее всего не нулевой) а буфер останется таким же. Это причина ошибок 2 и 3.

    Тогда вопрос. Если в буфере, после ввода 'y' (спецификатор "%c") остается символ '\0' — не понимаю, как тогда вообще считать только один символ?
  •  
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.