Не работает признак конца ввода данных с клавиатуры - C (СИ)
Формулировка задачи:
только начал изучать с++, и сразу же появилась проблемка) создал консольное приложение, написал программу подсчета символов в файле. Только вот в цикле while, не работает признак конца ввода символов (eof - код Esc по ASCII). В результате программа не выдает значение переменной nc. З.Ы. <Ctrl>+<z> тож не помогает. Не могу понять в чем проблема, подскажите плз)) Заранее спасибо!
Листинг программы
- //---------------------------------------------------------------------------
- #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;
- }
- //---------------------------------------------------------------------------
Решение задачи: «Не работает признак конца ввода данных с клавиатуры»
textual
Листинг программы
- #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);
- }
Объяснение кода листинга программы
- Объявлены переменные:
cnt
- счётчик символовf
- файловый указатель
- Проверка аргументов командной строки:
- Если аргументов нет, то программа считывает символы из стандартного ввода до конца строки
- Если передан один аргумент, то программа открывает файл для чтения в бинарном формате
- Обработка ошибок:
- Если не удалось открыть файл, то выводится сообщение об ошибке и программа завершается с кодом выхода EXIT_FAILURE
- Если не удалось выполнить смещение в файле, то выводится сообщение об ошибке и программа завершается с кодом выхода EXIT_FAILURE
- Выполняется смещение в файле на позицию 0, что соответствует концу файла
- Переменной
cnt
присваивается значение, полученное с помощью функцииftell()
, которая возвращает текущую позицию в файле - Файл закрывается с помощью функции
fclose()
- Выводится сообщение о количестве считанных символов
- Программа завершается с кодом выхода EXIT_SUCCESS
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д