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

БІБЛІОТЕЧНІ ФУНКЦІЇ вводу виводу 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 – специфікатор точності, вказується кількість цифр після крапки.

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

  1. d - ціле

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

  3. f – речовинне тип float або double

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

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

  6. c - символ

  7. s –рядок

  8. про – переклад в 8 річну систему числення

  9. х – переклад у шістнадцятирічну систему числення

Усі інші символи в рядку формату виводяться на екран без зміни.

Приклад:

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)

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