- •Введення інформації
- •Функції файлового вводу-виводу. Текстові файли з буферизацією Відкриття файлу: fopen.
- •Закриття файлу: fclose(in ) ;
- •Ввід/вивід файлу: fprintf(), fscanf()
- •Неформатований ввід/вивід.
- •Розділ вивчається тільки для при відмінній здачі попереднього матеріалу. Довільний доступ: fseek( )
( необхідно підключити файл stdio.h) 1
Засоби вводу/виводу безпосередньо в мову С++( так само як і С) не входять. У програмах мовою С++ можна рівноправно використовувати дві бібліотеки вводу виводу: стандартну бібліотеку С и бібліотеку класів, створену спеціально для С++.
БІБЛІОТЕЧНІ ФУНКЦІЇ вводу виводу
( необхідно підключити файл stdio.h)
Вивід інформації
Фунция - printf( ) /* друк форматованого виводу */
-список параметрів складається із двох частин. Перша частина - рядок формату, друга- список даних
Рядок формату містить:
прості символи, які копіюються в вихідний потік.
специфікатори формату, які починаються із символу %, за яким ідуть інші специфікатори:
% [flags][width][.prec]<type_char>,
Де тільки наявність <type_char> (символ типу перетворення) є обов'язковим.
flags:
- -вирівнює результат по лівому краю, доповнюючи його, при необхідності, праворуч проміжками. По замовченню йде вирівнювання по правому краю.
+ - якщо виводиться число, то знак + теж виводиться.
«проміжок « - якщо значення додатне, то виводиться проміжок замість +
width – специфікатор ширини, задає мінімальну ширину виведеного поля. Якщо не заданий або малий, то поле розширюється до необхідного розміру. Якщо перед специфікатором поставити 0, то число ліворуч доповниться нулями.
prec – специфікатор точності, вказується кількість цифр після крапки.
Символи типу перетворення:
d - ціле
u – ціле без знака
f –тип float або double
e –число в експоненціальній формі
g – дробне число, відображуване по формату “e”або “g”, залежно від того, яка форма є більш короткою.
c - символ
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)
Заповнення диска, використання забороненого імені або деякі інші причини можуть перешкоджати відкриттю файлу. Тому треба обов'язково виконувати відповідну перевірку.