Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
R4_КП_12.doc
Скачиваний:
8
Добавлен:
23.11.2018
Размер:
605.18 Кб
Скачать

Введення/виведення даних в с

У мові С немає вбудованих засобів введення/виведення даних. Для організації відповідних дій використовуються стандартні бібліотечні функції. Введення даних здійснюється із стандартного вхідного файлу stdin (тобто, з клавіатури), виведення – у стандартний вихідний файл – stdout (тобто, на дисплей).

Форматоване введення / виведення. Форматоване введення здійснюється функціями:

  • scanf - вводить дані із стандартного потоку вводу stdin у відповідності із заданим форматом, записуючи їх у змінні, адреси яких задаються аргументами;

  • сscanf – реалізує кольорове введення, якщо попередньо встановлений колір символів, що вводяться (за допомогою функції TextColor);

  • sscanf - вводить дані із символьного масиву у змінні, адреси яких задаються аргументами.

Формат виклику функції scanf:

scanf(<форматний_рядок>,<список_аргументів>),

де <список_аргументів>::=&<аргумент>{,&<аргумент>}

<форматний_рядок>::=”%[<ширина_поля>]<специфікатор> {%[<ширина_поля>]<специфікатор>}”

Аргументами функції scanf є не імена змінних, а їхні адреси (знак & означає узяття адреси).

Символ «%» є символом початку задання формату введення чергового аргумента.

Специфікатор визначає тип аргумента функції scanf. Для числових даних використовуються специфікатори:

d – для цілих десяткових чисел (тип int);

u – для цілих десяткових без знака (тип unsigned int);

f – для дійсних чисел (тип float);

e – для дійсних чисел в експоненціальній формі (тип float).

Перед специфікатором можна вказати кваліфікатор (префікс) h, l чи L. Наприклад: %lf,%le,%hd.

Для цілих типів префікс h еквівалентний short, префікс l – long. Для дійсних типів префікс l означає, що тип аргументу не float, а double. Для префікса L – тип long double.

 Форматний рядок завжди береться в подвійні лапки.

Функція scanf зчитує коди з клавіатури, перетворює їх у відповідності із специфікацією форматного рядка і передає програмі. Форматний рядок і список аргументів для функції scanf – обов'язкові параметри.

Формат виклику функції sscanf:

scanf(<рядок>,<форматний_рядок>,<список_аргументів>).

Наприклад,

scanf(“%d%f”,&a,&b);

char *st=“12 5.6“;

sscanf(st,“%d%f”,&a,&b); // a=12 b=5.6

Форматоване введення здійснюється функціями:

  • printf - записує аргументи у стандартний потік stdout у відповідності із заданим форматом;

  • cprintf - реалізує кольорове виведення, якщо попередньо встановлений колір символів, що вводяться;

  • sprintf - форматує та виводить послідовність символів і значень аргументів у символьний масив.

Формат виклику функції printf:

printf(<форматний_рядок>,<список_аргументів>),

де <список_аргументів>::=<аргумент>{,<аргумент>}

<форматний_рядок>::=”%[<літерал>][<маркер>][<ширина_поля>] [.<точність>]<специфікатор>{%[<літерал>] [<маркер>][<ширина_поля>][.<точність>] <специфікатор>}”

При описі формату виведення використовуються наступні позначення:

<маркер> – специфікатор вирівнювання виведених знаків, пропусків, десяткових крапок, вісімкових і шістнадцяткових префіксів;

<точність> – максимальне число символів, які будуть надруковані після коми.

Функція printf переводить дані з внутрішнього коду в символьне представлення відповідно до форматного рядка і виводить отримані символи на екран. Форматний рядок може включати довільний текст, керуючі символи та специфікації перетворення даних. Список аргументів є необов'язковим параметром даної функції.

Функцію printf можна використовувати для виводу будь-якої комбінації символів, цілих та дійсних чисел, довгих цілих, беззнакових довгих цілих тощо.

Формат виклику функції sprintf:

sprintf(<форматний_рядок>,<список_аргументів>).

Для використання в програмі функцій printf і scanf необхідно підключити заготовочний файл <stdio.h>.

Приклад програми (обчислення площі кругу):

#include <stdio.h>

void main()

{ double r,s;

const float pi=3.14;

printf("\n r=");

scanf("%lf",&r);

s=pi*r*r;

printf("\nПлоща кола: %10.3f",s);

}

Потокове введення / виведення. Потокове виведення виконується за допомогою операції зсуву вліво («помістити в потік») ”<<”. Стандартна операція ”<<” для операцій виведення перевизначається, тобто для неї визначаються нові можливості. Потокове введення аналогічне виведенню, але використовує перевизначену операцію зсуву вправо ( ) ”>>”.

Операція «помістити в потік» (”<<”)має асоціативність зліва направо:

(((cout<<"47+ 53 =")<<(47+53))<<endl).

Тобто, багато­разові операції ”<<” виконуються у тій послідовності, у якій вони записані.

Такий спосіб об’єднання операцій «<<» можливий, оскільки дана операція повертає посилання на об’єкт свого лівого операнда (на об’єкт cout). Отже, саме лівий вираз в круглих дужках

(cout << «47 + 53 =")

виводить заданий рядок символів і повертає посилання на cout. Тому середній вираз в круглих дужках має виконуватися, тобто виводити ціле значення 100 і повертає посилання на cout, наприклад: (cout<<(47+53)). Потім виконується самий правий вираз у круглих дужках, наприклад: cout << endl, який переводить рядок, скидає cout і повертає посилання на cout.

Аналогічно, багато­разовою є і операції ”>>”.

Для керування потоковим введенням/виведенням можуть використовуватися маніпулятори потоків, які виконують завдання форматування і такі операції, як установлення ширини полів виведення, визначення точності, вставку у вихідний потік символа нового рядка тощо. Наприклад, маніпулятор hex задає форматування із шістнадцятковим перетворенням, endl - вставку символа нового рядка і очищення потоку.

Стандартні засоби потокового введення/ виведення описані у бібліотеці iostream. Інтерфейс цієї бібліотеки – це кілька заголовних файлів:

  • iostream.h - містить основні відомості для операцій з потоками, а також об’єкти cіn, cout, cerr, які відповідають стандартним потокам введення-виведення та повідомлень про помилки;

  • іomanіp.h – обробляє форматоване введення-виведення за допомогою параметризованих маніпуляторів потоку.

Наприклад,

#include <iostream.h>

void main()

{ double r,s;

const float pi=3.14;

cout<< "\nr=";

cin >> r;

s=pi*r*r;

cout<< "\nПлоща кола: " << s << endl;

}

Введення / виведення символів та рядків. Для введення / виведення символів та рядків у мові С++ служать наступні основні функції:

  • getchar - введення символу з клавіатури із його ехо-друком;

  • getch - введення символу з клавіатури без його ехо-друку;

  • putchar - виведення символу на екран;

  • gets - введення рядка з клавіатури;

  • puts- виведення рядка на екран.

 Після введення символу за допомогою функції getchar треба очистити буфер клавіатури (використати функцію fflush(stdin)).

Описи відповідних функцій введення / виведення містяться у бібліотеці stdio.h.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]