0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 7

Не работает признак конца ввода данных с клавиатуры

16.08.2010, 01:23. Показов 6056. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
только начал изучать с++, и сразу же появилась проблемка) создал консольное приложение, написал программу подсчета символов в файле. Только вот в цикле while, не работает признак конца ввода символов (eof - код Esc по ASCII). В результате программа не выдает значение переменной nc. З.Ы. <Ctrl>+<z> тож не помогает. Не могу понять в чем проблема, подскажите плз)) Заранее спасибо!

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#define eof 27
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{
  long nc;
  printf("make input>\n");
  nc=0;
  //c=getchar();
  while(getchar() != eof)
     nc++;
  printf("ch num is %d\n", nc);
  getch;
}
//---------------------------------------------------------------------------
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.08.2010, 01:23
Ответы с готовыми решениями:

С клавиатуры вводятся целые числа. Признак конца ввода – 0. Определить количество минимальных значений.,
нужно написать программку срочно(С++) ...О_опомогите пожалуйста) ВОТ УСЛОВИЕ: С клавиатуры вводятся целые числа. Признак конца...

С клавиатуры вводится текст. Признак конца ввода - точка. Вывести все согласные, которых нет ни в одном слове
С клавиатуры вводится текст. Признак конца ввода — точка. Вывести все со- гласные, которых нет ни в одном слове. Использовать...

Код не правильно работает (вывести значение предшествующее первому введенному максимальному(признак конца ввода - 0)
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include &lt;math.h&gt; int main() { setlocale(LC_ALL, &quot;Rus&quot;); int...

9
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.08.2010, 02:11
Я один не понимаю как вяжется программа данная ТС с заданием? оО

создал консольное приложение, написал программу подсчета символов в файле.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
 
int main()
{
  long nc;
  printf("make input>\n");
  FILE*f=fopen("Name.txt", "r");
  char ch;
  if(!f)
  {
     printf("Error!\n");
     return 1;
  }
  nc=0;
  while(ch=getc(f)!=EOF)
  {
     nc++;
  }
  printf("ch num is %d\n", nc);
  getch();
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.08.2010, 02:13
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

getchar() считывает символ только после нажатия Ентер, а getch() считывает символ сразу после нажатия

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <conio.h>
 
#define eof 27
 
int main()
{
    printf("make input>\n");
    int nc = 0;
    char c = ' ';
    while(c != eof) 
    {
        c = getch();
        printf("%c", c);
        nc++;
    }
    printf("\nch num is %d\n", nc);
    getch();
}
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
16.08.2010, 02:38
не самая удачная идея называть esc eof, а то я уж подумал
0
 Аватар для abiprofi
48 / 48 / 7
Регистрация: 04.08.2010
Сообщений: 110
16.08.2010, 03:27
Развлекаемся? Вот вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//программа предназначена для подсчета символов
//веденных с клавиатуры
 
//программа работает так:
//после приглашения make input>
//вводим символы и нажимаем Ctrl+Z
//на экране появиться количество символов
//после этого нажимаем любую клавишу программа завершается
 
#include <stdio.h>//для getchar()
#include <conio.h>//для getch()
#define eof -1//eof - Ctrl+Z
//---------------------------------------------------------------------------
 
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
  long nc;
  printf("make input>\n");
  for(nc = 0; getchar() != eof; nc++){;}
  printf("ch num is %ld\n", nc);
  _getch();//ждем нажатия любой клавиши для завершения работы
}
//---------------------------------------------------------------------------
В CodeGear2010 и VS 2010 работает по разному, в последней необходимо нажать Enter и
лишь потом Ctrl+Z!
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.08.2010, 04:07
Цитата Сообщение от ichigo9911
не работает признак конца ввода символов (eof - код Esc по ASCII).
потому что getchar() возвращает EOF (прямо большими буквами), который не нужно определять, так как он уже определён в stdio.h
0
 Аватар для abiprofi
48 / 48 / 7
Регистрация: 04.08.2010
Сообщений: 110
16.08.2010, 04:39
потому что getchar() возвращает EOF (прямо большими буквами), который не нужно определять, так как он уже определён в stdio.h
accept, а как быть с wide-character end of file indicator
EOF работать не будет!!!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12841 / 7590 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.08.2010, 04:45
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Lavroff Посмотреть сообщение
Я один не понимаю как вяжется программа данная ТС с заданием?
Не, я тоже не понял... Вот так с именем файла переданным параметром будет считать сколько символов в файле, без параметра - количество введённых до '\n'
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char **argv){
    FILE * f;
    long cnt;
    
    if ( argc == 1 )
        for ( cnt = 0; getchar() != '\n'; ++cnt )
            ;
    else {
        if ( ( f = fopen(argv[1], "rb") ) == NULL ){
            perror("fopen");
            exit(EXIT_FAILURE);
        }
        if ( fseek(f, 0, SEEK_END) ){
            perror("fseek");
            exit(EXIT_FAILURE);
        }
        cnt = ftell(f);
        if ( fclose(f) )
            perror("fclose");
    }
    printf("%ld characters.\n", cnt);
    
    exit(EXIT_SUCCESS);
}
0
 Аватар для abiprofi
48 / 48 / 7
Регистрация: 04.08.2010
Сообщений: 110
16.08.2010, 05:01
Файл можно ввести и в рантайм, прямо в консоли!
Открываем консоль и вводим текст (файл).
Подсчитываем символы которые только что ввели.
Пример TC взят из книги господина Бориса Пахомова - C/C++ и MS Visual C++2008 для начинающих.
В книге описан подсчет символов в файле, где под файлом подразумевается вышесказанное.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.08.2010, 07:10
Цитата Сообщение от abiprofi
accept, а как быть с wide-character end of file indicator
при getchar() используется EOF
при getwchar() используется WEOF
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.08.2010, 07:10
Помогаю со студенческими работами здесь

С клавиатуры вводятся целые числа. Признак конца ввода – ноль. Записать в строку эти числа как вещественные в нормализов
Нельзя использовать функции преобразования типов. Напишите вот эту часть задачи: С клавиатуры вводятся целые числа. Признак конца ввода...

Признак конца ввода
Что является признаком конца ввода?

признак конца ввода
Здравствуйте. Учу С++ по книге Дейтела так вот там пример программы #include &lt;iostream&gt; #include &lt;locale.h&gt; using...

Признак конца ввода
Всем привет, есть задача: На стандартном потоке ввода задаётся последовательность целых чисел. Каждое число последовательности не...

Задача, на признак конца ввода
Помогите пожалуйста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru