7 / 8 / 9
Регистрация: 15.07.2015
Сообщений: 56
|
||||||
1 | ||||||
При вводе данных цикл по поиску EOF в Getchar не останавливается15.07.2015, 14:28. Показов 3006. Ответов 13
Метки нет (Все метки)
Здраствуйте, вот такая проблема:
0
|
15.07.2015, 14:28 | |
Ответы с готовыми решениями:
13
Ограничить данные при вводе scanf или getchar Завершение цикла при вводе EOF Почему последний Enter при вводе строки отбрасывается (getchar)? Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл? |
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
15.07.2015, 14:33 | 2 |
0
|
7 / 8 / 9
Регистрация: 15.07.2015
Сообщений: 56
|
|
15.07.2015, 14:35 [ТС] | 3 |
но dev-c++ вроде как универсальный и для си и для c++.
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
15.07.2015, 14:42 | 4 |
0
|
7 / 8 / 9
Регистрация: 15.07.2015
Сообщений: 56
|
|
15.07.2015, 14:49 [ТС] | 5 |
Короче должен вывести количество символов но вместо этого продолжает требовать вводит еще.
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
15.07.2015, 15:28 | 6 |
QewerC, Ctrl+Z введите.Или поставьте ограничение на ввод не EOF,а другой символ.
0
|
7 / 8 / 9
Регистрация: 15.07.2015
Сообщений: 56
|
|
15.07.2015, 15:43 [ТС] | 7 |
Почему так происходит? ctrl+z надо вводит вначале или в конце? ctrl+z За что эта команда отвечает?
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
15.07.2015, 15:51 | 8 |
0
|
7 / 8 / 9
Регистрация: 15.07.2015
Сообщений: 56
|
|
15.07.2015, 16:21 [ТС] | 9 |
Почему тогда это работает только так: ввел символы, энтер, дальше контр з и энтер, а не мои символы, контр з и энтер?
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
15.07.2015, 17:58 | 10 |
QewerC, получается getchar() осуществляет буферизованный ввод, поэтому при таком вводе остановка не происходит.Если хотите,можете поискать как выполнить не буферизованный ввод одного символа.
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
||||||
16.07.2015, 09:29 | 11 | |||||
Если такое вообще возможно без вмешательства в I/O sheduler.
EOF надо воодить в новой пустой строке. А лучше не заморачиваться со стандартными потоками (которые на практике вообще не пригодятся), а написать файл и направить поток в программу
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
||||||
16.07.2015, 10:17 | 12 | |||||
Сообщение было отмечено Памирыч как решение
Решение
Стало интересно и я нашел у Керниган-а и Ритчи такую функцию:
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
16.07.2015, 10:53 | 13 |
Это не отменяет буфферизации I/O ядром.
Добавлено через 16 минут Вообще буферизация I/O используется неспроста. Если отбросить сокеты, то весь остальной I/O - это работа с дисками (считаем что диск - абстракция постоянного хранилища данных). Так вот скорости работы процессора и дисковых операций различаются в сотни порядков. Выход из этой ситуации нашелся в условном усреднении скоростей путем различных техник буфферизации I/O. Иначе мы просто не могли бы работать в привычном для нас понимании этого слова.
1
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
16.07.2015, 11:13 | 14 |
0
|
16.07.2015, 11:13 | |
16.07.2015, 11:13 | |
Помогаю со студенческими работами здесь
14
Бесконечный цикл при вводе несоответствующего типа данных Getchar и putchar EOF Прекращение чтения строк при вводе символа EOF Назначение функций getchar и костанты EOF Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |