Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Функции getchar() и putchar().






Символьные строки и функции над символами.

Функция 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.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.011 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал