![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
n199a |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
Не могу понять, чем отличаются эти 2 кода:
Где именно осуществляется подсчет? Как посмотреть, сколько "он" насчитал?
Первый код сохраняю как name1.c и компилирую, второй сохраняю как name2.c и компилирую. Запускаю cmd, ввожу name1 (Enter), печатаю сколько угодно символов и жму Enter, появляется новая строчка и опять можно печатать, и так до бесконечности. Во втором случае с name2 все аналогично. Так чем они отличаются? |
||||
|
|||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: нет Всего: 55 |
"Конец файла", он же EOF, на который вы проверяете вводимый символ, в Windows вводится по нажатию Ctrl+Z. Если вам надо завершать цикл по Enter (новая строка), то следует использовать EOL. Оба варианта кода бесконечно (до нажатия Ctrl+Z) читают вводимые символы. Первый код, судя по всему, помимо общего количества символов, считает еще строки (по количеству переносов строк) и слова (по количеству пробелов/переносов/табуляций). Добавлено @ 18:00 Инкремент сразу после ввода символа. Функция getchar() читает один символ из входного потока. Это сообщение отредактировал(а) Arantir - 17.4.2013, 18:00 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
n199a |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
[quote]
Цитата(n199a @ 17.4.2013, 15:27 ) и так до бесконечности "Конец файла", он же EOF, на который вы проверяете вводимый символ, в Windows вводится по нажатию Ctrl+Z. Если вам надо завершать цикл по Enter (новая строка), то следует использовать EOL. Оба варианта кода бесконечно (до нажатия Ctrl+Z) читают вводимые символы. Первый код, судя по всему, помимо общего количества символов, считает еще строки (по количеству переносов строк) и слова (по количеству пробелов/переносов/табуляций). Добавлено @ 18:00 Цитата(n199a @ 17.4.2013, 15:27 ) Где именно осуществляется подсчет? Инкремент сразу после ввода символа. Функция getchar() читает один символ из входного потока. [quote] Вот, то, что надо. Вместо EOF надо использовать EOL. ![]() Кстати, от безысходности я начал тыкать все клавиши, чтобы хоть какая-нибудь табличка вылезла и она вылезла, когда я нажал F6 (аналог Ctrl+Z). Это сообщение отредактировал(а) n199a - 17.4.2013, 19:18 |
|||
|
||||
n199a |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
А почему тут когда я ставлю EOL, то не компилируется?
Вылазит ошибка:
|
||||||
|
|||||||
Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
||||
|
||||
n199a |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
Когда стоит EOF - то надо писать '\n' (перенос на новую строку) и окончание цикла while закончится по нажатию Ctrl+Z (Enter). Если писать EOL - то не надо использовать '\n' (перенос на новую строку) и окончание цикла while закончится по нажатию Enter. Я правильно понял? Нет, не так. Как будет выглядеть рабочий вариант с использованием EOL? Код работает так: 1) Запускаю через cmd 2) Ввожу любые символы/знаки 3) Enter 4) Опять ввожу символы/знаки .... И так продолжается, пока не нажмешь Ctrl+Z (потом Enter). А как сделать так, чтобы вместо Ctrl+Z надо нажимать Enter, чтобы программа завершалась? Это сообщение отредактировал(а) n199a - 17.4.2013, 20:01 |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: нет Всего: 55 |
n199a, EOF и EOL — это только аббревиатуры ("end of file", "end of line").
Нет символа "конец файла", поэтому для этого есть константа EOF. В то же время "конец строки" — это символ '\n'. Цикл закончится по нажатию enter, если вы напишите '\n' вместо EOF. Добавлено через 1 минуту и 16 секунд Для конца строки так же есть константа std::endl -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
n199a |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
Вот, то, что надо ![]() |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: нет Всего: 55 |
Упс, сори, это не константа, а функция (не бить, я специализируюсь не на c++ =)) -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Я думаю стоит почитать учебник какой-нибудь.
|
|||
|
||||
n199a |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |