Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція №1 Файли вводу-виводу мови C.doc
Скачиваний:
1
Добавлен:
10.11.2019
Размер:
81.41 Кб
Скачать

( необхідно підключити файл stdio.h) 1

Засоби вводу/виводу безпосередньо в мову С++( так само як і С) не входять. У програмах мовою С++ можна рівноправно використовувати дві бібліотеки вводу виводу: стандартну бібліотеку С и бібліотеку класів, створену спеціально для С++.

БІБЛІОТЕЧНІ ФУНКЦІЇ вводу виводу

( необхідно підключити файл stdio.h)

Вивід інформації

Фунция - printf( ) /* друк форматованого виводу */

-список параметрів складається із двох частин. Перша частина - рядок формату, друга- список даних

Рядок формату містить:

  1. прості символи, які копіюються в вихідний потік.

  2. специфікатори формату, які починаються із символу %, за яким ідуть інші специфікатори:

% [flags][width][.prec]<type_char>,

Де тільки наявність <type_char> (символ типу перетворення) є обов'язковим.

flags:

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

+ - якщо виводиться число, то знак + теж виводиться.

«проміжок « - якщо значення додатне, то виводиться проміжок замість +

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

prec – специфікатор точності, вказується кількість цифр після крапки.

Символи типу перетворення:

  1. d - ціле

  2. u – ціле без знака

  3. f –тип float або double

  4. e –число в експоненціальній формі

  5. g – дробне число, відображуване по формату “e”або “g”, залежно від того, яка форма є більш короткою.

  6. c - символ

  7. s –рядок і т.д. (детальніше див. у Глушакова )

Приклад:

main()

{int a=5; char s=’А'; float x=33.435;

printf(“мені %d yeas old %cх=%8.2f”,a,s,x); //х буде вирівняно по правому краю. Треба спочатку -, тоді по лівому.

}

Функція sprintf виводить інформацію не на стандартне обладнання виводу, а в символьний рядок.

shar str[80];

sprintf (str,“мені %d yeas old %cх=%8.2f”,a,s,x);

Введення інформації

scanf( ) /* форматований ввід */

є багатоцільовий, яка дозволяє вводити дані будь-яких типів. Функція сканує (переглядає) клавіатуру, визначає, які клавіші натиснуті, а потім інтерпретує ввід, ґрунтуючись на вказівниках формату. Список параметрів scanf( ) складається із двох частин: рядка формату й списку даних. Рядок формату визначає, яким чином повинні бути интепретировані дані, що вводяться. Список даних містить змінні, у які повинні бути занесені значення, що вводяться. У списку даних треба вказувати адресу змінної, а не її ім'я ( для рядка просте ім'я). Після натискання <ENTER> дані передаються функції scanf( ) у вигляді набору символів. Функція визначає, які символи відповідають типу, заданому вказівником формату, а які слід ігнорувати. Функція ігнорує знаки: проміжки, символи табуляції, знаки нового рядка, крім тих випадків, коли тип визначений, як рядок.

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

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

sscanf( ) схожа на scanf( ), тільки здійснює ввід з рядка символів.

Функції файлового вводу-виводу. Текстові файли з буферизацією Відкриття файлу: fopen.

Перед тем, як виконувати операції в/в у файл, його потрібно відкрити. Відкриття файлу здійснюється функцією fopen( ). Після роботи, файл потрібно закрити. Для цього використовується функція fclose( ). Функції fopen() і fclose( ) працюють із текстовими файлами з «буферизацієй». Під буферизацієй ми розуміємо, що виведені дані запам'ятовуються в тимчасовій області пам'яті( буфері). Якщо буфер заповнився, уміст його передається в блок, і процес буферизації починається знову. Одна з основних задач fclose( ) полягає в тому, щоб «звільнити» будь-які частково заповнені буфери, якщо файл закритий.

Текстовим є файл, у якім інформація запам'ятовується у вигляді символів у коді ASCII (або аналогічному). Він відрізняється від двійкового файлу, який звичайно використовується для запам'ятовування кодів машинної мови.

Функція fopen() має два основні параметри. Перший — ім'я файлу, який слід відкрити. Другий параметр описує, як повинен використовуватися файл. Три основні значення параметру:

“r” : файл потрібно вважати

“w” : файл потрібно записати

“a” : файл потрібно доповнити

Для вказівки того, що файл текстовий треба до режиму додати t “rt”, для бінарного файлу -b.

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

Увага: Якщо використовувати "w" для існуючого файлу, то його стара версія стирається.

Функція повертає вказівник на відкритий файл:

FILE *in;

in = fopen("test", "r");

Тепер in є вказівником на файл " test". Із цього моменту програма посилається на файл за допомогою вказівника in, а не по імені test.

Опис FILE знаходиться в stdio.h.

Якщо fopen() не здатна відкрити необхідний файл, вона повертає значення 'NULL' (визначено в stdio.h як 0).

if ( (in = fopen{“test", "г") )!= NULL)

Заповнення диска, використання забороненого імені або деякі інші причини можуть перешкоджати відкриттю файлу. Тому треба обов'язково виконувати відповідну перевірку.