| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > В чем отличие подсчета символов во входном потоке |
| Автор: n199a 17.4.2013, 16:27 | ||||
Не могу понять, чем отличаются эти 2 кода:
Где именно осуществляется подсчет? Как посмотреть, сколько "он" насчитал?
Первый код сохраняю как name1.c и компилирую, второй сохраняю как name2.c и компилирую. Запускаю cmd, ввожу name1 (Enter), печатаю сколько угодно символов и жму Enter, появляется новая строчка и опять можно печатать, и так до бесконечности. Во втором случае с name2 все аналогично. Так чем они отличаются? |
| Автор: Arantir 17.4.2013, 17:59 |
"Конец файла", он же EOF, на который вы проверяете вводимый символ, в Windows вводится по нажатию Ctrl+Z. Если вам надо завершать цикл по Enter (новая строка), то следует использовать EOL. Оба варианта кода бесконечно (до нажатия Ctrl+Z) читают вводимые символы. Первый код, судя по всему, помимо общего количества символов, считает еще строки (по количеству переносов строк) и слова (по количеству пробелов/переносов/табуляций). Добавлено @ 18:00 Инкремент сразу после ввода символа. Функция getchar() читает один символ из входного потока. |
| Автор: n199a 17.4.2013, 18:52 |
| [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:23 | ||||||
А почему тут когда я ставлю EOL, то не компилируется?
Вылазит ошибка:
|
| Автор: Crafty 17.4.2013, 19:44 |
Что такое EOL? Если end of line, то в С '\n' является концом строки. |
| Автор: Arantir 17.4.2013, 19:59 |
| n199a, EOF и EOL — это только аббревиатуры ("end of file", "end of line"). Нет символа "конец файла", поэтому для этого есть константа EOF. В то же время "конец строки" — это символ '\n'. Цикл закончится по нажатию enter, если вы напишите '\n' вместо EOF. Добавлено через 1 минуту и 16 секунд Для конца строки так же есть константа std::endl |
| Автор: n199a 17.4.2013, 20:03 | ||
Вот, то, что надо |
| Автор: Arantir 17.4.2013, 20:06 |
Упс, сори, это не константа, а функция (не бить, я специализируюсь не на c++ =)) |
| Автор: Crafty 17.4.2013, 20:07 |
| Я думаю стоит почитать учебник какой-нибудь. |
| Автор: n199a 18.4.2013, 09:32 |
Я читаю и по ходу дела возникают вопросы, которые я задаю сюда. Кстати, какой учебник посоветуете для начала? (Керниган,Ритчи - Программирование на C.2 издание.2009) |