Ћекции.ќрг
 

 атегории:


ѕоездка - ћедвежьегорск - ¬оттовара - янгозеро: ѕо изначальному плану мы должны были стартовать с янгозера...


Ќазначение, устройство и пор€док оборудовани€ открытого сооружени€ дл€ наблюдени€ на  Ќѕ командира ћ—¬


”ниверсальный восьмиосный полувагона: ѕередний упор отлит в одно целое с ударной розеткой.  онцева€ балка 2 сварна€, коробчатого сечени€. ќна состоит из...

”нкції стандартного введення/виведення



Далі наведені основні функції стандартного введення/виведення мови C.

Функция getchar()

Формат функції:

getchar();

Функція вводить з клавіатури один символ і повертає його. Звертатися до цієї функції можна так:

char c; // або

int c;

c = getchar();

Функция putchar()

Формат функції:

putchar(c);

Виводить значення змінної з (один символ) на стандартне вивідний пристрій.

Функция printf()

Формат функції:

printf(Control, arg1, arg2, ... , argn);

Це функція форматного виводу. Виводить на екран вміст arg1, arg2, ... , Argn і повертає кількість виведених байтів. Control - керуючий символьний рядок, в якому знаходяться формати виводу на екран для відповідних аргументів arg1, arg2, ... , Argn, тобто перший формат - для виведення arg1, другий - для arg2 і т. д. Всі символи, що знаходяться між форматами, виводяться один до одного, тобто не форматуються. Це дає можливість виведення додаткового тексту для поліпшення читаності результату виводу.

Формати виводу задаються так: будь-який формат починається з символу '%' і закінчується одним із символів форматування:

- d - аргумент перетвориться до десяткового вигляду (з урахуванням знака);

- o - аргумент перетвориться до восьмеричному беззнаковим увазі;

- x - аргумент перетвориться в беззнакову шістнадцяткову форму (з символами a, b, c, d, e, f);

- Х - аргумент перетвориться в беззнакову шістнадцяткову форму (з символами А, B, C, D, E, F);

- U - аргумент перетвориться в беззнакову десяткову форму;

- з - аргумент розглядається як окремий символ;

- s - аргумент розглядається як рядок символів; символи рядка друкуються до тих пір, поки не буде досягнутий нульовий символ або не буде надруковано кількість символів, вказане в специфікації точності (про специфікатор точності скажемо далі в цьому ж розділі);

- е - аргумент розглядається як змінна типу float або double і перетвориться в десяткову форму у експонентному вигляді: [-]m.nnnnnn e[+-]xx, де довжина рядка з n визначається вказаною точністю. За замовчуванням точність дорівнює 6;

- E - те ж, що і e, але з символом E для експоненти;

- f - аргумент розглядається як змінна типу float або double і перетвориться в десяткову форму у вигляді: [-] Mmm.nnnnnn, де довжина рядка з n визначається вказаною точністю. За замовчуванням точність дорівнює 6;

- g - використовується або формат %e, або %f: вибереться той формат, який дасть зображення числа з меншою кількістю знаків з урахуванням заданої точності. Незначущі нулі не друкуються;

- G - те ж, що і g, але з E для експоненти, якщо використовується формат e;

- n - вказівник на ціле зі знаком;

- p - вхідний аргумент виводиться як вказівник. Формат залежить від моделі використовуваної пам'яті. Він може бути вигляду XXXX: YYYY або YYYY (тільки зміщення).

Між межами формату виводу (від знаку % до символу-специфікатора типу виведеного аргументу) знаходяться:

[Прапорці] [ширина] [. Точність] [F | N | h | l | L]

Квадратні дужки означають, що елемент, що входить в них, може бути відсутнім для якогось формату. Наприклад, якщо виводиться десяткове число, то точність для нього не має сенсу.

- Прапорці визначають вирівнювання виведеного значення (по правому чи лівому краю поля виводу), знаки числа, десяткові крапки, кінцеві нулі, вісімкові і шістнадцяткові префікси. Прапорці мають наступний сенс:

• - (дефіс) - вирівнювання результату по лівому краю поля виводу (число буде притиснуте до лівої межі поля виводу) і заповнення поля виводу праворуч пробілами. Якщо цей прапор не заданий, результат вирівнюється по правому краю поля виведення, а простір, що залишився зліва, заповнюється пробілами або нулями;

• + - перетворення результату до вигляду зі знаком: результат завжди починається зі знака '+' або '-';

• пробіл - якщо значення невід'ємне, замість плюса виводиться пробіл. Для від’ємних чисел виводиться мінус;

• # - вказує, що аргумент повинен бути перетворений з використанням альтернативної форми. Це означає, що якщо прапорець # використовується разом з символом перетворення (форматування), то при перетворенні аргументу для символів c, s, d, u, i, o, x, X символ # не впливає на результат. Для символів e, E, f результат завжди буде містити десяткову точку, навіть якщо за точкою не слідує ніяких цифр (зазвичай десяткова крапка з'являється, якщо за нею слідує цифра). Для символів g, G результат буде як для символів e, E, але з тією відмінністю, що хвостові нулі не будуть видалятися.

Якщо задані і пробіл, і знак '+', то перевагу має знак '+'.

- Специфікатор ширини визначає розмір поля для вихідного значення.

Ширину можна задати двома способами: безпосередньо, рядком десяткових цифр, і побічно, через символ '*': в цьому випадку аргумент повинен мати тип int. Якщо для завдання ширини ви використовуєте символ '*', то специфікація ширини вказується не в рядку Control, а в списку аргументів перед відповідним аргументом.

Специфікатори ширини можуть бути такі:

• n - в цьому випадку виведеться не менше n символів. Якщо в виведеному числі символів менше, ніж n, решта поля заповниться пробілами - праворуч, якщо заданий прапорець, ліворуч - у противному випадку;

• 0n (наприклад, 04) - буде виведено не менше n символів. Якщо в виведеному числі символів менше, ніж n, решта поля заповниться зліва нулями;

• * (для формату d) - якщо для завдання ширини ви використовуєте символ '*', то специфікація ширини вказується не в рядку Control, а в списку аргументів перед тим аргументом, для якого вона визначена.

Причому ширина являє собою окремий аргумент. Наприклад, виводимо число i = 2 по функції:

printf("%*d\n", 5, i);

Результат буде пппп2 (де п - символ пробілу). Тут ширина задана рівною 5 і вказана в списку аргументів окремо, але перед тим аргументом, для якого вона визначена.

- Специфікатор точності задає число виведених символів. Завдання специфікатора точності завжди починається зі знака точки, щоб відокремити його від специфікатора ширини. Як і специфікатор ширини, точність може задаватися двома способами:

• безпосередньо - завданням числа;

• побічно - вказівкою символу '*'.

Якщо ви використовуєте зірочку для специфікатора точності, то специфікація точності вказується не в рядку Control, а в списку аргументів перед відповідним аргументом як окремий аргумент (через кому).

Аргумент, для якого вказується специфікація точності, може бути тільки типу int.

Якщо ви використовуєте зірочку для завдання ширини або точності або для завдання обох специфікацій, то специфікатор ширини повинен відразу слідувати за специфікатором точності: спочатку вказується точність, за нею - ширина. Наприклад, у виклику:

printf ("%. * d \n", 2, 5, i);

задана точність 2 і ширина 5 для цілого числа. Якщо i = 5, то результат буде 05: точність - головна у визначенні ширини поля виводу.

Як задавати точність, видно з табл. 1.

Наприклад, для j = 6.28 по printf ("%. F \n", j) отримаємо результат - 6.

Таблица 1. Завдання специфікатора точності

Специфікатор точності Опис
Не заданий Точність буде встановлена за замовчуванням: • 1 - для форматів d, o, u, x, X; • 6 - для форматів e, E; • всі значущі цифри - для форматів g, G; • до ознаки кінця рядка - для формату s; • не діє - для формату c
Точність встановлюється за умовчанням - для форматів d, o, u, x. Десяткова крапка не друкується для форматів e, E, f
n Виводиться n символів або n десяткових місць. Якщо в виведеному значенні символів більше n, висновок може бути усічений або заокруглений (це залежить від типу формату)
. (точка) Дані виводяться як цілі для формату f

- Модифікатори розміру, що задаються у форматі, визначають, як функція інтерпретує аргумент. Дія модифікаторів показано в табл. 2.

Таблиця 2. Дія модифікаторів розміру

Значення Формат Інтерпретація
F p, s Далекий вказівник
N n Близький вказівник
h d, o, u, x, X short int
l d, o, u, x, X long int
l e, E, f, g, G double
L e, E, f, g, G long double
L d, o, u, x, X __int64
h c, C 1 символьний байт
l c, C 2 символьних байта
h s, S 1 строка символов по 1 байту на символ
h s, S 1 строка символов по 2 байта на символ

Наприклад, якщо ми виводимо дані типу long, ми повинні задавати разом з форматом d і модифікатор типу l, тобто загальний вигляд формату буде ld.

Функция scanf()

Формат функції:

scanf(Control, arg1, arg2, ... , argn);

Це функція форматного введення з клавіатури. Здійснює посимвольно введення даних з клавіатури, перетворює їх у відповідності з форматом для кожного значення, зазначеному в керуючій (форматної) символьної рядку Control, і результат перетворення записує в аргументи arg1, arg2, ..., argn. Сенс рядки Control той же, що і для функції printf (). Так як arg1, arg2, ..., argn - це вихідні параметри функції, то при зверненні до функції вони повинні задаватися своїми адресами: імена масивів задаються іменами, т. к. ім'я масиву - це покажчик на його перший елемент, а ті аргументи , які не є покажчиками, задаються як & arg.

Форматна рядок Control - це символьний рядок, що містить три типи об'єктів: незначущі символи, значущі символи і специфікації формату.

Незначущі символи - це пробіл, знак табуляції (\t), символ переходу на новий рядок (\n). Як тільки функція зустрічає незначущий символ в рядку формату, вона зчитує, але не зберігає всі наступні незначущі символи до тих пір, поки не зустрінеться перший значущий символ (тобто пропускає незначущі символи). Значущі символи - це все символи коду ASCII, крім символу '%'. Якщо функція зустрічає в форматної рядку значущий символ, вона його зчитує, але не зберігає. Специфікація формату функції має вигляд:

%[*][ширина][F/N] [h/l] символ_формата

Після символу початку формату '%' в певному порядку слідують інші специфікації:

- * - це необов'язковий символ придушення введення: весь вхідний потік функція розглядає як сукупність полів введення - значущих символів. Якщо в специфікації вказано символ '*', то все поле, яке повинне в даний момент оброблятися функцією по заданому формату, пропускається.

Введення відбувається так: у відповідності зі специфікатором ширини першого формату з вхідного потоку вибирається чергове поле введення (Тобто значущі символи до першого незначущого), яке інтерпретується у відповідності з форматом і записується у відповідний аргумент. Якщо при цьому запитана ширина виявилася меншою поля введення, то залишок поля обробляється функцією по наступному формату. Якщо запитана ширина виявилася більше поля введення, то все поле введення обробляється за даним форматом. Якщо ж в оголошенні формату присутній символ придушення введення '*', то все поле, призначене для обробки даним форматом, пропускається.

- Модифікатори розміру аргументу і символи форматування функції scanf () аналогічні модифікаторам і символам форматування функції printf ().

Розглянемо приклад роботи функції scanf (). Припустимо, задано:

int i; float x; char m[100];

scanf("%2d %f %*d %2s", &i, &x, m);

На клавіатурі набираємо послідовність:

56789 0123 45а72

Як буде йти введення?

У прикладі є три поля введення: 56789, 0123 і 45а72. Функція у відповідності з першим форматом (%2d) вибирає з першого поля перші два символу. Функція інтерпретує їх як десяткове число і привласнює значення першому аргументу: i = 56. У першому полі залишилися необробленими символи 789. Вони потрапляють в роботу функції по другому формату %f. Другий аргумент отримає значення x = 789. Далі повинне оброблятися поле 0123 по третьому формату, але в ньому є символ придушення. Тому поле пропускається і починає оброблятися поле 45а72 за форматом %2s. З цього поля будуть обрані тільки перші два символи і рядок m отримає значення '45'.

Функция sprintf()

Формат функції:

sprintf(string, Control, arg1, arg2, ... , argn);

Ця функція аналогічна printf (), за винятком того, що результат своєї роботи вона виводить не на стандартний пристрій виводу, а в рядок string.

Це дозволяє збирати в один рядок дані абсолютно різних типів.

Функция sscanf()

Формат функції:

sscanf(string, Control, arg1, arg2, ... , argn);

Ця функція аналогічна scanf (), за винятком того, що вхідні дані для її роботи надходять не зі стандартного пристрою введення, а з рядка string. Це дозволяє виділяти в рядку різні групи даних абсолютно різних типів і поміщати їх в окремі змінні.

Функция cprintf()

Формат цієї функції совпадает с форматом функции printf():

сprintf(Control, arg1, arg2, ... , argn);

Параметри аналогічні параметрам printf (). Але для забезпечення роботи цієї функції слід підключити до програми файл conio.h, виконавши:

#include <conio.h>

Якщо функція printf () виводить дані туди, куди призначено stdout (див. початок розд. "Стандартний ввід / вивід"), то функція cprintf () завжди виводить дані на консоль (на це вказує символ 'з' на початку її імені), тобто на екран.

На відміну від printf (), функція cprintf () не переводить символ '\n' в пару "\r \n" - повернення каретки та переведення рядка (замість '\n' треба вказувати обидва цих символу). Крім того, символи табуляції '\t' не перетворюються в пробіли.

Цю функцію не рекомендується використовувати для додатків Win32 або Win32 GUI. Але її можна використовувати для видачі на екран кольорових повідомлень. Для цього треба скористатися функціями textcolor () (встановити колір тексту) і textbackground () (встановити колір фону). Кольори задаються в єдиних аргументах цих функцій, виходячи з табл. 3.

Таблиця 3. Завдання кольору

Колір Символьна константа Значення аргумента
Чорний BLACK
Синій BLUE
Зелений GREEN
Блакитний CYAN
Червоний RED
Пурпурний MAGENTA
Коричневий BROWN
Світло-сірий LIGHTGRAY
Темно-сірий DARKGRAY
Світло-синій LIGHTBLUE
Світло-зелений LIGHTGREEN
Світло-блакитний LIGHTCYAN
Світло-червоний LIGHTRED
Світло-пурпурний LIGHTMAGENTA
Жовтий YELLOW
Білий WHITE
Миготіння кольору BLINK

Як аргумент можна брати як символічні константи, так і їх числові значення.

Щоб задати, наприклад, блимання кольору, слід виконати:

textcolor(CYAN + BLINK);

або:

textcolor(3 + 128);

Наведемо приклад програми з функцією cprintf () (лістинг 5).

•стинг 5

//--------------------------------------------------------------------#include <vcl.h>

#include <conio.h>

#include <stdio.h>

int main(void) {

/* Приклад 1: обов'язкове використання символу повернення каретки (\r) і символу перекладу рядка (\n) */

/* Очистка екрану */

clrscr ();

/* Створення вікна для тексту */

window (10, 10, 80, 25);

/* Виведення тексту у вікно */

cprintf ("Hello world \ r \ n");

/* Затримка: очікування введення з клавіатури */

getch ();

/* Приклад 2: виведення 9-ти рядків з різними кольорами тексту і фону */

int i, j;

clrscr ();

for (i = 0; i <9; i + +) // 9 кольорів тексту {

for (j = 0; j <80; j++)

cprintf ("C");

printf ("\ n");

textcolor (i + 1); // колір тексту

textbackground (i); // колір фону

}

getch ();

clrscr ();

// Приклад 3: миготіння

textbackground (YELLOW);

textcolor (CYAN + BLINK); // миготіння

cprintf ("Hello! \r \n");

getch ();

return 0;

}

Функция gets()

Формат функції:

gets(s);

Вводить рядок символів з клавіатури і записує його в рядок s, який може бути оголошений як char *s або char s[].

Функция puts()

Формат функції:

puts(s);

Виводить вміст рядка s на пристрій стандартного виводу (екран).

Рядок s може бути оголошений як char * s або char s [].

Функция cputs()

Формат функції:

сputs(s);

Виводить вміст рядка s на екран (s може бути оголошена як char * s або char s []). Цю функцію можна використовувати для виводу на екран кольорових текстів. Колір виведених символів задається за допомогою функції textcolor (), а колір фону - функцією textbackground () (див. також коментар до функції cprintf ()). Для роботи функції треба підключити файл conio.h.

Функция gotoxy()

Формат функції:

gotoxy(x, y);

Переводить курсор у точку з координатами (x, y) в поточному вікні на екрані, де х - номер стовпця екрану, y - номер рядка екрана. Обидві змінні повинні бути описані як int (не в пікселах!). Для роботи функції треба підключити файл conio.h. Приклад програми з функцією gotoxy () приведений в лістингу 6.

•стинг 6

//--------------------------------------------------------------------#include <vcl.h>

#pragma hdrstop

#include <conio.h>

//--------------------------------------------------------------------#pragma argsused

int main(int argc, char* argv[]) {

clrscr();

gotoxy(35, 12);

cprintf("Hello, world");

getch();

}

Функция clrscr()

Формат функции:

clrscr();

Очищає екран і зафарбовує його кольором, заданим функцією textbackground (). Приклад програми з цією функцією приведений в лістингу 7.

•стинг 7

//--------------------------------------------------------------------#include <vcl.h>

#pragma hdrstop

#include <conio.h>

//--------------------------------------------------------------------#pragma argsused

int main(int argc, char* argv[]) {

textcolor(YELLOW);

textbackground(YELLOW);

clrscr();

gotoxy(35, 12);

cprintf("Hello, world");

getch();

}

Функция window()

Формат функции:

window(x1, y1, x2, y2);

Функція створює вікно на екрані, де (x1, y1) - координати лівого верхнього кута вікна, (x2, y2) - правого нижнього. Всі параметри повинні бути описані як int.

Введення/введення у мові С++

јгальні положення

Введення і виведення в С++ організований за допомогою так званих поточних класів, що містять дані і методи роботи з файлами по введенню/виведенню.

Потокові класи походять від спільного предка - класу ios і тому успадковують його функціональність. Щоб почати писати програму з використанням введення/виведення на мові С++, слід обов'язково виконати в програмі:

#include <fstream>

Клас fstream є нащадком класів istream і ostream. Ці ж класи є батьками класів ifstream і оfstream. Клас fstream використовується для організації введення/виведення (тобто читання-запису) в один і той же файл.

Класи ifstream, оfstream - для організації відповідно введення (читання) файлу і виведення (записи в файл). У свою чергу, екземплярами класів istream, ostream є cin, cout, cerr, за допомогою яких здійснюється так зване стандартне введення/виведення - введення зі стандартного ввідного пристрою, яким за замовчуванням є клавіатура, і виведення на стандартний вивідний пристрій, яким за замовчуванням є екран. Таким чином, включення в програму класу fstream виявляється достатнім для організації як стандартного, так і файлового введення/виведення.

Файлове введення/виведення організоване за допомогою перевизначених в потокових класах операцій включення (<<) та вилучення (>>). Раніше ми бачили, що це операції зсуву вліво і зсуву вправо бітів у змінній типу int, але в поточних класах С++ вони знайшли нову функціональність.

Щоб працювати з файлом, його спочатку слід відкрити - зв'язати зі спеціальною структурою, в якій задаються характеристики файлу (розмір буфера введення/виведення, стан файлу, останній прочитаниї запис і т. п.). Зв'язок цей виконується за допомогою функції open (), що входить в один з класів, який визначає введення/виведення (fstream, istream, ostream). Тому, щоб виконати таку функцію, слід спочатку створити екземпляр відповідного класу, щоб отримати доступ до цієї функції. Якщо ми, наприклад, хочемо виконувати виведення у файл (тобто запис у нього), то слід створити екземпляр класу ostream:

ostream exp;

і потім виконати функцію exp.open (). У дужках повинні бути вказані параметри цієї функції: ім'я файлу і спосіб відкриття файлу, в якому задаються відомості про те, як користувач збирається працювати з файлом: читати його, писати в нього або робити щось ще.

Після того як файл відкритий для читання або запису, використовують операції включення-вилучення (<<, >>). Якщо використовувати приклад з примірником exp класу ostream, то можна записати, наприклад:

exp << "рядок тексту" << i << j << endl;

Тут i, j - деякі змінні (наприклад, int i; float j;), endl - кінець виводу і перехід на новий рядок.

Після того як робота з файлом закінчено, слід закрити файл, щоб розірвати зв'язок з тією структурою, з якою файл був пов'язаний при його відкритті. Це необхідно, щоб дати можливість іншим файлам "відкриватися".

Цей акт виконується за допомогою методу close () того ж екземпляра класу, який ми створювали, щоб виконати функцію open (). У нашому випадку слід було б написати:

exp.close ();





ƒата добавлени€: 2016-09-06; просмотров: 4988 | Ќарушение авторских прав


–екомендуемый контект:


ѕохожа€ информаци€:

  1. C)  вадрат стандартного отклонени€
  2. I. ѕ–»≈ћџ —“јЌƒј–“Ќќ√ќ ѕќ»— ј »Ќ‘ќ–ћј÷»» ¬ —≈“» »Ќ“≈–Ќ≈“
  3. ¬прави ≥ ≥гри дл€ розвитку нестандартного мисленн€
  4. Ќедостатки стандартного конспектировани€
  5. ќняття стратегічного маркетингу. Функції та інструменти стратегічного маркетингу
  6. ќформление курсовой работы.  урсова€ работа печатаетс€ на компьютере на одной стороне стандартного листа формата ј-4
  7. ѕроектирование нестандартного урока по геометрии
  8. –обота є 11/3. ¬изначенн€ стандартного окисно-в≥дновного потенц≥алу
  9. “андартне введення/виведення
  10. “–≈Ѕќ¬јЌ»я   ќ‘ќ–ћЋ≈Ќ»ё  ”–—ќ¬ќ… –јЅќ“џ.  урсова€ работа набираетс€ на компьютере через 1,5 интервала с использованием шрифта є 14 на одной стороне листа писчей бумаги стандартного формата ј4 с
  11. “ребовани€ к оформлению курсовой работы.  урсова€ работа набираетс€ на компьютере, либо печатаетс€ на пишу≠щей машинке на одной стороне стандартного листа бумаги формата ј4
  12. “ребовани€ к оформлению курсовых работ. –абота печатаетс€ на одной стороне белого листа стандартного формата ј 4 (210*297) , в текстовом режиме Word шрифтом Antigua или Times New Roman є 14 черными


ѕоиск на сайте:


© 2015-2019 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.022 с.