реклама на сайте
подробности

 
 
> Как симитировать конец потока символов (EOF), В Си
Motion
сообщение Oct 11 2009, 18:26
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Код подсчитывает количество введённых символов.
Код
#include <stdio.h>

int main(void)

{

    long nc;
    int c;
    nc=0;
    while((c=getchar())!=EOF)
        ++nc;

    printf("%ld/n", nc);

return 0;
    }


После компиляции запускается окно (console application). Начинаю вводить разные символы, нажимаю Enter, пробелы и т.д. А как симитировать EOF чтобы программа наконец вышла из цикла while() и вывела результат?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Oct 11 2009, 19:44
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Владимир_КПИ @ Oct 11 2009, 21:26) *
Код
    printf("%ld/n", nc);
"%ld\n"

Цитата(Владимир_КПИ @ Oct 11 2009, 21:26) *
А как симитировать EOF чтобы программа наконец вышла из цикла while() и вывела результат?

В DOS и Win* консоли - Ctrl-Z или, что то же самое, Alt-26 в начале строки (после чего всё равно надо ENTER, так как ввод построчно-буферизованный).
В Linux - Ctrl-D (ASCII EOT aka КП - "КонецПередачи")


Цитата(SysRq @ Oct 11 2009, 22:34) *
ctrl-c
и программа вывалится на getchar-е не дойдя до printf


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
SysRq
сообщение Oct 11 2009, 19:51
Сообщение #3


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(ReAl @ Oct 11 2009, 23:44) *
и программа вывалится на getchar-е не дойдя до printf
Да, вы правы! У меня срабатывает, но это частный случай.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Владимир_КПИ   Как симитировать конец потока символов (EOF)   Oct 11 2009, 18:26
- - тау   в стародавние времена ДОСа вроде бы спасала комбин...   Oct 11 2009, 18:33
- - Hellper   не... поспешил   Oct 11 2009, 18:36
- - rezident   Удерживая ALT, на доп. цифровой клаве набрать 255.   Oct 11 2009, 19:21
- - SysRq   ctrl-c, или ввод из файла сделать, направив содерж...   Oct 11 2009, 19:34
- - Владимир_КПИ   Цитата"%ld\n" Да, верно. При компил...   Oct 12 2009, 18:28
|- - ReAl   Цитата(Владимир_КПИ @ Oct 12 2009, 21:28)...   Oct 12 2009, 20:24
- - Владимир_КПИ   Цитатапосле чего всё равно надо ENTER, так как вво...   Oct 30 2009, 18:33
- - baralgin   Владимир_КПИ Во второй программе тоже буферизирова...   Oct 30 2009, 21:22
- - Владимир_КПИ   ЦитатаВо второй программе тоже буферизированный вв...   Oct 30 2009, 21:40
- - baralgin   Задача не совсем ясна. Знак табуляции это и есть ...   Oct 30 2009, 22:30
- - Владимир_КПИ   А возможна работа программы в небуферизированом ре...   Oct 31 2009, 08:47
- - SysRq   getch(), _getch()   Oct 31 2009, 10:53
- - Владимир_КПИ   Цитатаgetch(), _getch() Получилось, только дополн...   Oct 31 2009, 18:58
- - baralgin   С функциями типа _getch/e() есть небольшая загвозд...   Oct 31 2009, 21:24
- - sigmaN   а чё, просто if( сh=='\t' ) ch = ...   Nov 1 2009, 23:46


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016