Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Функции getchar() и putchar().Стр 1 из 2Следующая ⇒
Символьные строки и функции над символами. Функция getchar() не имеет аргументов и возвращает очередной символ из входного потока и передаёт его выполняемой программе. ch= getchar(); Функция putchar(). Выводит на печать свой аргумент putchar(ch). Обе функции определены в файле cstdio.h Рассмотрим задачу: если символом является пробел, он выводится на печать, в противном случае печатается следующий за ним символ. #include< stdio.h> #define SPACE ‘ ‘ void main() { char ch; ch=getchar(); //читать символ while(ch! =’\n’) // пока не будет введён символ конца строки ENTER { if(ch== SPACE) // оставить пробел putchar(ch); // символ остаётся неизменным else putchar(ch+1); //изменить другие символы ch=getchar(); // принять следующий символ } return; } Заменим цикл, приведённый выше на следующий while ((ch=getchar())! =’\n’) В этом выражении сочетаются два действия. Действиями являются присваивание значения переменной ch и сравнение этого значения с символом новой строки. Круглые скобки, охватывающие выражение ch=getchar() делают его левым операндом оператора! =. Компьютер вначале обращается к функции getchar(), а затем сравнивает ch! =’\n’.Нельзя опустить ни одну пару скобок т.к. операция! = имеет более высокий приоритет, чем =. Перепишем программу, учитывая только буквы, не трогая знаки пунктуации. #include< stdio> #include< cctype> // для функции isalpha() void main() { char ch; while(ch=getchar())! =’\n’) { if(isalpha(ch)) // если это буква putchar(ch+1); // изменить её else putchar(ch); //иначе печатать символ таким как есть } putchar(ch); //распечатать символ новой строки return 0; } Следующий пример подсчитывает символы, отличные от одинарных и двойных кавычек, которые содержатся во входном выражении. #include< iostream> #include< cstdio> #define PERIOD ‘.’ using namespace std; int main() { char ch; int charcount=0; while(ch=getchar())! =PERIOD) { if(ch! =’ ” ’& & ch! =’\’ ‘) charcount++; } cout< < charcount; return 0; } Следующий пример подсчитывает во входном выражении количество символов, слов и строк. Чтобы определить входит символ в состав слова, можно установить флаг (inword) в 1, когда считывается первый символ слова. Далее, пока inword остаётся равным 1, последующие символы, отличные от служебных, не означают начала следующего слова. При появлении служебного слова флаг устанавливается в 0 и программа будет готова к выявлению следующего слова. /*производит подсчёт символов, строк, слов.*/ #include< stdio.h> #include< iostream.h> #include< ctype.h> //для функции isspace() //#include< stdbool.h> // для bool, true, false #define STOP '|' void main() {char c; //считывание символа char prev; // считывание предыдущего символа long n_chars=0L; //число символов int n_lines=0; // число строк int n_words=0; // число слов int p_lines=0; //кол-во частичных строк int inword=0; // ==true, если с находится в слове cout< < " введите анализируемый текст или | для конца ввода" < < endl; prev='\n'; // используется для идентификации завершённых строк while((c=getchar())! =STOP) {n_chars++; //учёт слов if(c=='\n') n_lines++; //учёт кол-ва строк if(! isspace(c) & &! inword) {inword=1; //начало следующего слова n_words++; //учёт слов } if(isspace(c) & & inword) inword=0; //достигнут конец слова prev=c; } if(prev! ='\n') p_lines=1; cout< < n_chars< < " " < < n_words< < " " < < n_lines< < endl; return; }
Функции символьного ввода/ вывода: Функция get() вводит один символ из стандартного устройства (по умолчанию клавиатура).Функция put() выводит одиночные символы на экран. Формат: device.get(char_val); device.put(char_val); Рассмотрим пример: # include < iostream.h> void main() {char in_char; char first, last; cout< < ”Инициалы имени”< < endl; cin.get(in_char); //ожидание буквы first=in_char; cin_get(in_char); //игнорирует символ новой строки при нажатии на клавишу ENTER/ cout< < ”Инициалы фамилии”< < endl; cin.get(in_char); //ожидание буквы last=in_char; cin_get(in_char); //игнорирует символ новой строки cout< < ”Ваши инициалы”< < endl; cout.put(first); cout.put(last); return (); } Функции getch() и putch() считывают символ с клавиатуры и выводит его на экран, однако, при их использовании ввод и вывод не могут быть перенаправлены даже через операционную систему. int_var=getch(); putch(int_var); Функция getch() при получении вводимого символа не выводит его на экран. Обе функции описаны в заголовочном файле conio.h.
|