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

Решил вплотную заняться изучением С по сабжевой книге (раньше ничего на нем и плюсах не писал; решил выучить для общего развития). Вот один из примеров оттуда с небольшими отличиями:
Код: 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
Прошу помочь понять пример использования getchar() из K&R
    #39456881
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любезный,

EOF == ^Z == Ctrl+Z
...
Рейтинг: 0 / 0
Прошу помочь понять пример использования getchar() из K&R
    #39456887
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор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
Прошу помочь понять пример использования getchar() из K&R
    #39456891
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любезный,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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