Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_Лаб_Гриф.doc
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
2.81 Mб
Скачать

Питання для контролю і самостійної роботи

  1. Укажіть способи оголошення символьних рядків (перемінних і констант).

  2. Який символ ставиться наприкінці рядка ?

  3. Скільки пам'яті займає один символ рядка ?

  4. Скільки пам'яті займає рядок (слово) з 6 букв?

  5. Чи можна використовувати покажчики для адресації символьних рядків, що містяться в масивах ?

  6. Скільки покажчиків можна використовувати для роботи з масивами ?

  7. Який об'єкт адресується покажчиком, зміщеним відносно початку рядка на n байтів?

  8. Яка функція дозволяє визначити довжину рядка ?

  9. Які операції застосовні до покажчиків і необхідні для роботи з рядками ?

  10. Чи можна виконувати ініціалізацію масивів з даними типу char рядками символів ?

  11. Чи можна виконувати ініціалізацію покажчиків на тип char рядками символів ?

  12. Які символьні послідовності називають керуючими, що вони означають ?

Заняття № 12

Використання бібліотечних функцій для роботи із символьними даними

(2 години)

Ціль роботи: виробити практичні навички в написанні програм з використанням бібліотечних функцій для роботи із символьними даними.

Теоретичні відомості

Функції для роботи із символьними даними

Для роботи із символьними даними розроблений ряд бібліотечних функцій. Розглянемо деякі з них:

char *strcat(char *dest, const char *src); - додає копію рядка src у кінець dest. Довжина рядка, що є результатом роботи функції дорівнює strlen(dest)+strlen(src). Функція strcat( ) повертає покажчик на рядок dest, що є результатом її роботи.

Функція char *strchr(const char *s, int c1); - переглядає рядок у прямому напрямку для відшукання в ньому заданого символу. Функція strchr( ) шукає перше входження символу с1 у рядок s і повертає покажчик на перше входження символу с1 в s. Якщо c1 не виявлений у s, то strchr( ) повертає нуль. Символ кінця рядка вважається частиною рядка, тому strchr(strs, 0) поверне значення покажчика на нульовий кінцевий символ рядка strs.

int strcmp(const char *s1, const char *s2); - здійснює беззнакове порівняння рядків s1 і s2, починаючи з першого символу кожного рядка, доти, поки чергові відповідні символи в рядках не будуть різні чи поки не будуть досягнуті кінці рядків. Функція strcmp() повертає значення:

< 0 якщо s1 менше ніж s2;

= = 0 якщо s1 дорівнює s2;

> 0 якщо s1 більше ніж s2.

int strcmpi(const char *s1, const char *s2); - порівнює один рядок з іншим аналогічно strcmp( ), але без урахування великих і маленьких букв (регістру). Функція strcmpi( ) визначена як макрос у <string.h> і перетворює виклики strcmpi( ) до викликів strcmp( ). Макрос забезпечує сумісність з іншими компіляторами С.

int strncmp(const char *s1, const char *s2, size_t maxlen); - порівнює частину одного рядка з частиною іншого. Функція strncmp( ) робить таке ж беззнакове порівняння, як і strcmp( ), але переглядає не більш, ніж maxlen символів. Вона починає з першого символу кожного рядка і закінчує, коли чергові символи в рядках різні чи коли перевірено maxlen символів. Функція strncmp( ) повертає значення типу int, зміст якого аналогічний strcmp( ).

char *strcpy(char *dest, const char *src); - копіює рядок src у dest, завершуючи роботу після копіювання символу закінчення рядка. Функція strcpy( ) повертає покажчик на рядок з результатом (dest).

size_t strcspn(const char *s1, const char *s2); - шукає в рядку перший сегмент, що не містить жодного символу з заданого набору символів. Функція strcspn( ) повертає довжину першого сегмента рядка s1, що складається тільки із символів, що не входять у рядок s2.

size_t strlen(const char *s); - обчислює довжину рядка s. Функція strlen() повертає число символів у s, не враховуючи символ кінця рядка (‘ /0 ’).

char *strlwr(char *s); - перетворює букви верхнього регістра (А - Z) рядка s у букви нижнього регістра (a - z). Інші символи не змінюються. Функція strlwr( ) повертає покажчик на змінений рядок s.

char *strnset(char *s, int ch, size_t n); - заміняє задану кількість символів n у рядку s на зазначений символ ch. Функція strnset( ) копіює символ ch у перші n байтів рядка s. Якщо n > strlen(s), тоді strnset( ) заміняє усі символи і зупиняється, коли досягає кінця рядка (виявляє нульовий символ). Функція strnset() повертає покажчик на змінений рядок s.

char *strpbrk(const char *s1, const char *s2); - шукає в рядку s1 перше входження будь-якого символу з переданого набору символів s2. Функція strpbrk( ) здійснює пошук у рядку s1 першого входження кожного із символів, обумовлених рядком s2. Функція strpbrk( ) повертає покажчик на перше входження будь-якого символу з рядка s2. Якщо жоден символ із символів рядка s2 не виявлений у s1, то функція повертає нуль.

char *strrchr(const char *s, int ch); - шукає в рядку s останнє входження заданого символу ch. Функція strrchr( ) перевіряє рядок s у зворотньому напрямку, роблячи пошук заданого символу. Передбачається, що символ закінчення рядка є частиною рядка. Функція strrchr( ) повертає покажчик на останнє входження символу ch. Якщо символ ch не виявлений у s, то функція strrchr( ) повертає нуль.

char *strrev(char *s); - перевертає рядок. Функція strrev( ), переустановлює всі символи в рядку в зворотньому порядку, за винятком завершального нульового символу. Наприклад, слово "порядок\0" буде перетворене в "кодяроп\0". Функція strrev( ) повертає покажчик на перевернений рядок.

char *strset(char *s, int ch); - заміняє всі символи рядка s на заданий символ ch, закінчуючи роботу при виявленні символу кінця рядка. Функція strset() повертає покажчик на змінений рядок s, що є результатом.

char *strstr(const char *s1, const char *s2); - здійснює пошук у рядку s2 перше входження в нього підрядка s1. Функція strstr( ) повертає покажчик на елемент у рядку s2, з якого починається s1 (покажчик на s1 у s2). Якщо s1 не виявлена в s2, то strstr( ) повертає нуль.