Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB_TO2.doc
Скачиваний:
15
Добавлен:
19.02.2016
Размер:
2.62 Mб
Скачать

2 Постановка завдання

Задано рядок, що складається із слів, слова складаються з символів. Слова одне від одного відокремлюються одним або декількома пропусками. Наприкінці тексту ставиться крапка. Текст містить не більше 255 символів. Виконати ввід рядка, використовуючи функцію Gets(s) і здійснити обробку рядка у відповідності зі своїм варіантом.

3 Варіанти індивідуальних завдань

  1. Надрукувати всі слова, кількість символів яких більша 4 або вивести на екран повідомлення про відсутність таких слів..

  2. Перетворити рядок таким чином, щоб всі слова у ньому починалися тільки з букви “В’.

  3. Надрукувати всі слова, кількість символів яких більша 7, або вивести на екран повідомлення про відсутність таких слів.

  4. Надрукувати всі слова, які починаються з літери ‘a’, або вивести на екран повідомлення про відсутність таких слів.

  5. Перетворити рядок так, щоб всі малі букви а в ньому були замінені великими буквами А.

  6. Порахувати кількість слів в заданому тексті.

  7. Перетворити рядок так, щоб всі букви Q в ньому були замінені великими буквами А.

  8. Надрукувати всі слова, які починаються і закінчуються однаковими символами/

  9. Перетворити рядок таким чином, щоб всі слова у ньому починалися тільки з букви “K’.

  10. Перетворити рядок таким чином, щоб всі слова у ньому починалися тільки з букви “A’.

  11. Перетворити рядок так, щоб всі малі букви y в ньому були замінені великими буквами Y.

  12. Порахувати кількість слів в рядку.

  13. Надрукувати всі слова, які починаються з літери ‘a’, або вивести на екран повідомлення про відсутність таких слів.

  14. Порахувати кількість слів в рядку.

4 Методичні вказівки

  1. При вводі та виводі символів використовувати функції getchar і putchar відповідно, а також scanf() i printf() з використанням відповідних специфікаторів формату.

  2. Слід пам'ятати, що стрічка в пам’яті закінчується символом “\0”.

  3. При написанні програми можна використовувати стандартні функції із бібліотеки <string.h>.

Контрольні запитання

  1. Як здійснюється ввід символьних даних?

  2. Як здійснюється вивід символьних даних?

  3. Як здійснюється обробка рядків у мові СІ?

  4. Що є ознакою кінця стрічки?

  5. Які ви знаєте функції з бібліотеки <string.h> для обробки символів?

Практична робота № 7-8

Тема: Використання функцій прямого доступу до даних у файлах

Мета: Навчитися використовувати бібліотечні функції для організації прямого (довільного) доступу до дискових файлів

1 Короткі теоретичні відомості

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

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

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

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

Функції ftell(). Визначає положення вказівника у файлі. Прототип знаходиться у файлі stdio.h.

long ftell(FILE *fp) ;

Аргумент fp - є вказівником на структуру FILE , який повертається з функції fopen() при відкритті файлу. Функція повертає значення типу long, яке вказує номер текучого байта у файлі від його початку (початковий номер байта у файлі = 0). У випадку помилки функція повертає -1L (cont -1 типу long).

Функції rewind Встановлює положення вказівника на початок файлу Прототип знаходиться у файлі stdio.h і має вид:

void rewind(FILE *fp) ;

Аргумент fp - є вказівником на структуру FILE , який повертається з функції fopen() при відкритті файлу. Використовується тоді, коли з файлу були вже зчитані дані і знову треба вернутися на початок.

Приклад програми використання функцій rewind(). і .ftell()..

#include <stdlib.h>

#include <stdio.h>

char msg[]="abcdefghijklmnopqrstuvwxyz"; /* присвоєння масиву msg значень*/

main(){FILE *fp; /* Опис вказівника на структуру */

char buf[6]; /* Опис масиву розмірності 6 */

fp = fopen("C:\\ff.TXT", "w")); /* Відкриття файлу для запису */

if ( (fp = =NULL) { printf( "Помилка відкриття"); exit(1); }

fputs(msg, fp); /*Запис масиву у файл */

if (fputs(msg, fp) == EOF) { printf("Помилка запису."); exit(1); }

fclose(fp); /*Закриття файлу для запису*/

fp = fopen("C:\\ff.TXT ", "r"); /*Відкриття файлу для читання. */

if ( (fp == NULL) { fprintf (".Помилка відкриття "); exit(1); }

printf("\n=положення файлового вказівника%ld", ftell(fp));

/*Результат Друк ftell(fp)=0 */

fgets(buf, 6, fp); /* Зчитування з файлу fp 5 символів. */

printf("\nAДрук 5-ти символів%s, положення вказівника = %ld", buf, ftell(fp));

rewind(fp); /* Повернення на початок потоку. */

printf("\n\n Друк позиції %ld", ftell(fp));

fclose(fp); }

Функції fseek(). Ця функція додаткові можливості керування положенням вказівника у файлі. З її допомогою можна встановити вказівник в будь-яку позицію у файлі. Прототип знаходиться у файлі stdio.h. і має вигляд

int fseek(FILE *fp, long a1, int а2);

Аргумент fp - є вказівником на структуру FILE, який повертається з функції fopen() при відкритті файлу. Відстань, на яку треба сумістити вказівник позиції задається аргументом a1, вираженого в байтах. Аргумент а2 задає точку, від якої обчислюється зміщення. Цей аргумент може мати одне з трьох значень — символічні константи, перераховані в таблиці

Таблиця. Допустимі значення аргументів а2 функції fseek()

Константа

Значення

Опис

SEEK_SET

0

Встановлює вказівник на байт з порядковим номером a1, починаючи з початку файлу

SEEK_CUR

1

Зміщує вказівник на a1 байт від його текучого значення

SEEK_END

2

Встановлює вказівник на відстань a1 байт, починаючи з кінця файлу

Функція повертає 0, коли зміщення було виконано без помилок і ненульове значення у випадку помилки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]