Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Прошу помочь понять пример использования getchar() из K&R / 22 сообщений из 22, страница 1 из 1
21.05.2017, 16:20
    #39456878
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Приветствую всех.

Решил вплотную заняться изучением С по сабжевой книге (раньше ничего на нем и плюсах не писал; решил выучить для общего развития). Вот один из примеров оттуда с небольшими отличиями:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
#include <stdio.h>
int main()
{
 long nc = 0;
 while (getchar() != EOF)
  ++nc;
 printf ("%ld\n", nc);
 return 0;
}


Теоретически эта программа должна подсчитывать число символов во вводимой строке (особенности Unicode пока в расчет не берем). Но после ввода строки программа ничего не печатает, и приходится вылезать из конгсоли по комбинации Ctrl+C. Мне кажется, что там не возникает EOF. Но что сделать, чтобы все заработало - не пойму. Работаю в Линуксе с gcc.
...
Рейтинг: 0 / 0
21.05.2017, 16:45
    #39456881
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Любезный,

EOF == ^Z == Ctrl+Z
...
Рейтинг: 0 / 0
21.05.2017, 16:58
    #39456887
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
авторEOF == ^Z == Ctrl+Z
Уже другая непонятная фигня:
Код: sql
1.
2.
3.
4.
5.
6.
7.
slyubez@slyubez-Lenovo-IdeaPad-S400 ~/hello $ ./hello
test^Z
[1]+  Остановлено  ./hello
slyubez@slyubez-Lenovo-IdeaPad-S400 ~/hello $ ./hello
test1
^Z
[2]+  Остановлено  ./hello
...
Рейтинг: 0 / 0
21.05.2017, 17:03
    #39456891
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Любезный,

хз что там в линухах, может ^D
D:\VSProjects\crtlz>a
test1
^Z
Ja ja, 6
...
Рейтинг: 0 / 0
21.05.2017, 17:17
    #39456893
Common Lisp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Любезный,

Ctrl+D
...
Рейтинг: 0 / 0
21.05.2017, 17:19
    #39456894
Common Lisp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
SiemarglЛюбезный,

EOF == ^Z == Ctrl+ZТы не на winfaq.
...
Рейтинг: 0 / 0
21.05.2017, 17:20
    #39456896
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Спасибо за подсказку. Оказалось, ^D. Буду продолжать эксперименты.
...
Рейтинг: 0 / 0
21.05.2017, 17:35
    #39456898
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Common LispSiemarglЛюбезный,

EOF == ^Z == Ctrl+ZТы не на winfaq.Грузить специфический линух для проверки неизвестной фигни для стандартного С было неинтересно.

Он не оправдал моих ожиданий за 20 лет, с момента Калдыри 1.0
...
Рейтинг: 0 / 0
21.05.2017, 18:02
    #39456904
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Siemargl,

C то здесь причём?
...
Рейтинг: 0 / 0
21.05.2017, 18:40
    #39456911
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
авторC то здесь причём?
Дык вопрос был по K&R, а это именно С. И компилятор gcc с пингвином, а не VS под форточками.
...
Рейтинг: 0 / 0
21.05.2017, 21:16
    #39456945
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
ЛюбезныйавторC то здесь причём?
Дык вопрос был по K&R, а это именно С. И компилятор gcc с пингвином, а не VS под форточками.
какое отношение имеет K&R к завершению терминального ввода конкретной OS?
да и форточная VS справляется с С-шным исходником как и gcc
...
Рейтинг: 0 / 0
22.05.2017, 01:00
    #39456996
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
В K&R (во всяком случае, в первых ее главах, которые я сейчас прохожу) ни слова не сказано, как вызвать EOF в принципе, вне зависимости от ОС. А набив и запустив предыдущий пример из этой же книги, я подумал, что EOF вызывается при переводе строки. Уже позже, увидев, что следующая же программа не пашет, написал сюда. И хорошо что получил точную подсказку, скорректировавшую мое понимание процесса.
...
Рейтинг: 0 / 0
22.05.2017, 01:03
    #39456997
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
ИзопропилSiemargl,

C то здесь причём?А что С? У меня все ОК

У кого то руки кудрявые
...
Рейтинг: 0 / 0
22.05.2017, 01:06
    #39456998
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Common LispSiemarglЛюбезный,

EOF == ^Z == Ctrl+ZТы не на winfaq.
ЛюбезныйавторC то здесь причём?
Дык вопрос был по K&R, а это именно С. И компилятор gcc с пингвином, а не VS под форточками.
Если у исполняемого файла выходной бинарник "a" - то это gcc. минус за невнимательность
...
Рейтинг: 0 / 0
22.05.2017, 01:11
    #39456999
Common Lisp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
SiemarglГрузить специфический линух для проверки неизвестной фигни Т.е. эта "фигня" для тебя неизвестна, но ты полез помогать другому с ней разобраться?
...
Рейтинг: 0 / 0
22.05.2017, 15:16
    #39457426
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
Любезный Мне кажется, что там не возникает EOF. Но что сделать, чтобы все заработало - не пойму. Работаю в Линуксе с gcc.

Тут скорее всего ты напоролся на буферизацию ввода в терминальном клиенте.
Идея в том, что если ты работаешь через терминал, то ввести один символ отдельно у тебя не получится.
Потому что последовательность действий такова:
терминальный клиент вводит одну строку символов до перевода строки (ENTER)

строка, содержащая всю введённую строку, посылается программе ЦЕЛИКОМ.

программа далее может читать эту строку посимвольно или всю целиком, её дело. Но до того, как ты в консоли нажмёшь ENTER, программа ничего не прочитает. А после ENTER прочитает как минимум два символа , введённый и '\n'

Так работают юниксовые терминалы по сети или даже локально с данного хоста на данный хост.

Отдельно ввести один символ средствами стандартной библиотеки С вообще невозможно (можно через что-то типа CURSES/NCURSES).

Заметь, что это всё не означает, что пример из книги неправильный или с багом.
Ну и кстати НЕ ВСЕ операционки работают так, в Win и DOS например если я не ошибаюсь, программа будет работать "более адекватно".
...
Рейтинг: 0 / 0
22.05.2017, 15:19
    #39457431
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
ЛюбезныйСпасибо за подсказку. Оказалось, ^D^D. Буду продолжать эксперименты.

Для пояснения скажу, что Ctrl-Z в линуксе/юниксе посылает программе сигнал SIGSTOP, который приостанавливает выполнение программы.
...
Рейтинг: 0 / 0
22.05.2017, 18:25
    #39457638
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
авторПотому что последовательность действий такова:
терминальный клиент вводит одну строку символов до перевода строки (ENTER)
строка, содержащая всю введённую строку, посылается программе ЦЕЛИКОМ.
программа далее может читать эту строку посимвольно или всю целиком, её дело. Но до того, как ты в консоли нажмёшь ENTER, программа ничего не прочитает. А после ENTER прочитает как минимум два символа , введённый и '\n'
Спасибо за развернутый комментарий. Я в принципе пришел к похожим выводам по результатам последних экспериментов.
А есть ли какой-нить халявный компилятор под винду, который лучше использовать для изучения языка? Я в принципе против Линукса с gcc ничего не имею, но в винде просто удобнее.
...
Рейтинг: 0 / 0
22.05.2017, 20:48
    #39457674
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
ЛюбезныйА есть ли какой-нить халявный компилятор под винду, который лучше использовать для изучения языка? Я в принципе против Линукса с gcc ничего не имею, но в винде просто удобнее.
тот же gcc. (MinGW)

или Visual Sturio Community Edition - кроме компилятора ещё и среда разработки
...
Рейтинг: 0 / 0
22.05.2017, 22:19
    #39457688
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
ЛюбезныйавторПотому что последовательность действий такова:
терминальный клиент вводит одну строку символов до перевода строки (ENTER)
строка, содержащая всю введённую строку, посылается программе ЦЕЛИКОМ.
программа далее может читать эту строку посимвольно или всю целиком, её дело. Но до того, как ты в консоли нажмёшь ENTER, программа ничего не прочитает. А после ENTER прочитает как минимум два символа , введённый и '\n'
Спасибо за развернутый комментарий. Я в принципе пришел к похожим выводам по результатам последних экспериментов.
А есть ли какой-нить халявный компилятор под винду, который лучше использовать для изучения языка? Я в принципе против Линукса с gcc ничего не имею, но в винде просто удобнее.
http://www.codeblocks.org/downloads/26

Студия хорошая, но слишком уж много от нее мусора.
...
Рейтинг: 0 / 0
22.05.2017, 23:05
    #39457694
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
SiemarglСтудия хорошая, но слишком уж много от нее мусора.
какого ещё мусора?
...
Рейтинг: 0 / 0
23.05.2017, 10:53
    #39457813
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помочь понять пример использования getchar() из K&R
ИзопропилSiemarglСтудия хорошая, но слишком уж много от нее мусора.
какого ещё мусора?В системных каталогах и реестре.

Поставил, потренировался, удалил - не выйдет. Систему проще потом под нож.

/me Потому в виртуалках живет
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Прошу помочь понять пример использования getchar() из K&R / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]