Не работает признак конца ввода данных с клавиатуры - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д