- •Введення інформації
- •Функції файлового вводу-виводу. Текстові файли з буферизацією
- •Закриття файлу: fclose(in ) ;
- •Ввод/вивід файлу: getc( ) і putc( ) (stdio.H)
- •Ввід/вивід файлу: fprintf(), fscanf(), fgets() и fputs()
- •Функція fgets()
- •Функція fputs( )
- •Неформатований ввід/вивід.
- •Довільний доступ: fseek( )
БІБЛІОТЕЧНІ ФУНКЦІЇ вводу виводу 1
( необхідно підключити файл stdio.h) 1
Вивід інформації 1
Рядок формату: 1
Введення інформації 2
Функції файлового вводу-виводу. 3
Текстові файли з буферизацією 3
Закриття файлу: fclose(in ) ; 4
Ввод/вивід файлу: getc( ) і putc( ) (stdio.h) 4
Ввід/вивід ФАЙЛУ: fprintf(), fscanf(), fgets() И fputs() 5
Функція fgets() 5
Функція fputs( ) 6
Неформатований ввід/вивід. 6
ДОВІЛЬНИЙ ДОСТУП: fseek( ) 7
Засоби вводу/виводу безпосередньо в мову С++( так само як і С) не входять. У програмах мовою С++ можна рівноправно використовувати дві бібліотеки вводу виводу: стандартну бібліотеку С и бібліотеку класів, створену спеціально для С++.
БІБЛІОТЕЧНІ ФУНКЦІЇ вводу виводу
( необхідно підключити файл stdio.h)
Вивід інформації
putchar( ) /* друк символу putchar(‘a’); a=’a’;putchar(a); */
puts( ) /* друк рядка puts(“a”);a=”aa”;puts(a); може не здійснювати перехід новий рядок( треба перевіряти перед використанням)*/
Фунция - printf( ) /* друк форматованого виводу */
-список параметрів складається із двох частин. Перша частина - рядок формату, друга- список даних
Рядок формату:
Кожний вказівник формату починається із символу %, за яким ідуть специфікатори:
% [flags][width][.prec]<type_char>,
Де тільки наявність <type_char> (символ типу перетворення) є обов'язковим.
flags:
- -вирівнює результат по лівому краю, доповнюючи його, при необхідності, праворуч проміжоками. По умовчання йде вирівнювання по правому краю.
+ - якщо виводиться число, то знак + теж виводиться.
«проміжок « - якщо значення ненегативно, те виводиться проміжок замість +
Width – специфікатор ширини, задає мінімальну ширину виведеного поля. Якщо не заданий або малий, то поле розширюється до необхідного розміру. Якщо перед специфікатором поставити 0, то число ліворуч доповниться нулями.
prec – специфікатор точності, вказується кількість цифр після крапки.
Символи типу перетворення:
-
d - ціле
-
u – ціле без знака
-
f – речовинне тип float або double
-
e – речовинне число в експоненціальній формі
-
g – речовинне число, відображуване по формату “e”або “g”, залежно від того, яка форма є більш короткою.
-
c - символ
-
s –рядок
-
про – переклад в 8 річну систему числення
-
х – переклад у шістнадцятирічну систему числення
Усі інші символи в рядку формату виводяться на екран без зміни.
Приклад:
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);
Введення інформації
getchar( ) із клавіатури одиничний символ char OR int
int s1;char s2; s1=getchar();s2=getchar(); Є версії компіляторів, у яких символ уводиться відразу ж, не очікуючи натискання <ENTER>. Але не в нашому випадку. У нашому компіляторові не очікує <ENTER> функція getch().
gefs( ) /* одержання рядка */ уводить рядок у змінну.
char s[15]; gets(s); уводить 14 символів у змінну й наприкінці додає \0. При введенні символи відображаються на екрані в режимі луни, уведення відбувається тільки після натискання <ENTER>, тобто можна вводити проміжки
scanf( ) /* одержання форматованого вводу */
є багатоцільовий, яка дозволяє вводити дані будь-яких типів. Функція сканує (переглядає) клавіатуру, визначає, які клавіші натиснуті, а потім інтерпретує вводу, ґрунтуючись на вказівниках формату. Список параметрів scanf( ) складається із двох частин: рядка формату й списку даних. Рядок формату визначає, яким чином повинні бути интепретировані дані, що вводяться. Список даних містить змінні, у які повинні бути занесені значення, що вводяться. У списку даних треба вказувати адресу змінної, а не її ім'я ( для рядка просте ім'я). Після натискання <ENTER> дані передаються функції scanf( ) у вигляді набору символів. Функція визначає, які символи відповідають типу, заданому вказівником формату, а які слід ігнорувати. Функція ігнорує не утримуючі інформації знаки: проміжки, символи табуляції, знаки нового рядка, крім тих випадків тип, що коли тече, визначений, як рядок.
При ввводе рядка функція почне присвоювання з першого значущого символу, ігноруючи проміжки спереду, і зупиниться, зустрівши перший проміжок серед значимих символів.
При введенні чисел, функція переглядає вхідний потік і визначає, які символи можна ввести, а які слід ігнорувати. Якщо цифрові символи передую нецифровим, сканування триває, поки не зустрінеться нецифровий символ або проміжок. Цифрові символи перетворяться в число й заносяться за адресою змінної. Якщо нецифрові символи передують цифровим, функція припиняє роботу й уся надрукована послідовність ігнорується.Якщо вводу йде через буфер, то символи при цьому залишаться в буфері й будуть обрані при наступнім уведенні.
sscanf( ) схожа на scanf( ), тільки здійснює вводу з рядка символів.
Функції файлового вводу-виводу. Текстові файли з буферизацією
ПРОСТІ ПРОГРАМИ ЧИТАННЯ ФАЙЛУ:
fopen(), fclose( ), getc() і putc()
Перед тем, як виконувати операції в/в у файл, його потрібно відкрити. Відкриття файлу здійснюється функцією 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)
Заповнення диска, використання забороненого імені або деякі інші причини можуть перешкоджати відкриттю файлу. Тому треба обов'язково виконувати відповідну перевірку.