Читайте также: |
|
Тема: Використання стандартних функцій для обробки символьної інформації
Мета: Навчитись використовувати бібліотечні функції для роботи з символьними даними і текстовою інформацією.
1 Короткі теоретичні відомості
Визначення довжини рядка. Довжина рядка (кількість символів в ньому) визначається функцією strlen(). Прототип функції знаходиться в файлі string.h.
size_t strlen(char *str);
Тип size_t визначений в файлі stdring.h як unsigned. (ціле без знаку). Ця функція повертає ціле число без знаку. Цей тип використовується в багатьох функціях, які призначені для роботи з рядками. Аргумент, який передається в функцію це вказівник на рядок, довжину якого треба визначити. Функція повертає кількість символів. Від початку рядка до першого нульового символу.
Копіювання рядків. Один рядок не можна присвоїти іншому. Треба виконати копіювання даного рядка, який займає певну ділянку пам¢яті в іншу ділянку, де знаходиться рядок-копія.
Є дві функції strcpy() i strncpy(). Вони описані в файлі string.h, який необхідно підключити для їх використання.
Функція strcpy(). Копіює заданий рядок в ділоянку пам’яті. ЇЇ прототип
char *strcpy(char *destination, const char *sourse);
Функція strcpy() копіює рядок, який знаходиться по адресу sourse (разом з завершаючим символом /0) в ділянку пам¢яті, яка починається по адресу в вказівнику destination. Функція повертає вказівник на новий рядок destination.
До виклику функції необхідно виділити пам¢ять для нового рядка. Сама функція не перевіряє, чи досить пам¢яті по вказаній їй адресі. Якщо розподілу пам¢яті не виконалося, то функція затре strlen(sourse) байт нової інформації, починаючи з адресу, вказаному в destination.
Функція strncpy().аналогічна функції strcpy (), тільки з її допломогою копіюється задана кількість символів.
Порівняння двох рядків. Функція strcmp() призначена для посимвольного порівняння двох рядків. Вона має прототип:
Int strcmp(const chart *str1, const chart *str2);
Аргументи вказують на порівнювані рядки str1 і str2. Функція повертає від'ємне значення, якщо str1 менше str2, — нуль, якщо str1 = str2 і— додатнє значення, якщо str1 більше. str2.
Порівняння фрагментів двох рядків. Функція str n cmp() призначена для посимвольного порівняння фрагментів двох рядків довжиною n. Прототип:
Int str n cmp(const chart *str1, const chart *str2, size_t n );
Функція порівнює n символів рядків str1 і str2. Порівняння виконується до тих пір, поки не вичерпаються n символів, або не буде здосягнутий кінець рядка str1. Результат порівняння такий, як в попередній функції.
Функції для конкатенація (з’єднання) рядків і їх фрагментів. Конкатенація – це приєднання одного рядка до кінця іншого. Для конкатенації є функція strcat(). Прототип знаходиться в файлі string.h.
char *strcat(char *a1, сonst char *a2);
Функція поміщає копію рядка а2 в кінець рядка а1 і ставить завершуючий нульовий символ в кінець нового рядка. Попередньо необхідно виділити для рядка а1 достатньо місця. Функція повертає вказівник на рядок а1.
Функція strncat() виконує конкатенацію рядків з вказівкою кількості символів. Прототип функції: char *strncat(char *a1, Const char *a2, int n);
Якщо а2 має більше, ніж n символів, то до а1 приєднується n символів рядка а2. Якщо а2 має менше, ніж n символів, то до а1 приєднується рядок а2.
2. Варіанти індивідуальних завдань
1. За допомогою функції strcpy() скопіювати заданий рядок s1 з семи літер в рядок s2. Рядки s1 і s2 вивести на екран. Приєднати заданий рядок в кінець рядка-копії, результатуючий рядок вивести на екран.
2. Знайти довжину трьох заданих символьних рядків за допомогою функції strlen(). Результати вивести на екран. Приєднати перший рядок в кінець другого, результатуючий рядок вивести на екран.
3. За допомогою функції strcpy() скопіювати заданий рядок ss1 з 10-ти літер в рядок ss2. Рядки ss1 і ss2 вивести на екран.
4. За допомогою функції strcpy() скопіювати заданий рядок asdfghjkk в рядок ss1. Рядок ss1 вивести на екран. Приєднати заданий рядок в кінець рядка ss1, результатуючий рядок вивести на екран.
5. Порівняти перші 5 символів двох заданих рядків. за допомогою функції strncmp(). Результат порівняння вивести на екран. Приєднати перший рядок в кінець другого, результатуючий рядок вивести на екран.
6. За допомогою функції strncpy() скопіювати 5 символів заданого рядка asdfghjkk в рядок а1. Рядок а1 вивести на екран. Приєднати заданий рядок в кінець рядка а1, результатуючий рядок вивести на екран.
7. Задати рядок з 11 символів. Скопіювати 10 символів цього рядка в новий рядок. Результат вивести на екран. Приєднати новий рядок в кінець даного рядка, результатуючий рядок вивести на екран.
8. Порівняти два задані рядки за допомогою функції strcmp(). Результат вивести на екран. Приєднати другий рядок в кінець першого, результатуючий рядок вивести на екран.
9. Задати рядок символів. Знайти і вивести на екран його довжину. Скопіювати 5 символів цього рядка в новий рядок. Кількість символів заданого рядка і новий рядок вивести на екран.
10. Знайти довжину заданого рядка asddfghjk за допомогою однієї з функцій роботи з рядками. Скопіювати 4 символів цього рядка в новий рядок. Кількість символів заданого рядка і новий рядок вивести на екран.
11. Порівняти перші 5 символів двох заданих рядків. за допомогою функції strncmp(). Результат порівняння, а також рядки вивести на екран. Приєднати перший рядок в кінець другого, результатуючий рядок вивести на екран.
12. Знайти довжину двох заданих символьних рядків за допомогою функції strlen(). Результати вивести на екран. Приєднати другий рядок в кінець першого, результатуючий рядок вивести на екран.
13. Знайти довжину трьох заданих символьних рядків за допомогою функції strlen(). Результати вивести на екран. Приєднати третій рядок в кінець першого, результатуючий рядок вивести на екран.
3 Методичні вказівки
1. Перед написанням програми ще раз переглянути теоретичний матеріал і приклади програм, що ілюструють особливості обробки символьної інформації. Окрему увагу звернути на способи задання рядків.
2. Для роботи з бібліотечними функціями для обробки символьної інформації підключити бібліотечний файл string.h.
3. Уважно прочитати умову задачі індивідуального завдання, продумати алгоритм її розв'язку, вибрати потрібну бібліотечну функцію для роботи з символьними рядками.
4. Відкомпілювати програму і виконати її. Зафіксувати результати кожної реалізації.
4 Приклад виконання лабораторної роботи
Знайти довжину трьох заданих символьних рядків за допомогою функції strlen(). Результати вивести на екран. Приєднати другий рядок в кінець першого, а третій - в кінець другого, результатуючі рядки вивести на екран.
Текст програми
# include <string.h>
# include <stdio.h>
char a1[]=”qwerett”;
char a2[20]=”qyuwerp[ett”;
char a3[255]=”qwerett”;
int l1,l2,l3;
void main()
{/* Знаходження довжин рядків */
l1=strlen(a1);
l2=strlen(a2);
l3=strlen(a3);
/* Вивід довжин рядків */
printf(“l1=%d\t l2=%d\t l3=%d\n”);
strcat(a1,a2);
strcat(a2,a3);
puts(a1);
puts(a2); }
5 Контрольні запитання
1. Що таке довжина рядка і як її можна визначити?
2. Що таке рядок в мові С?
3. Що необхідно зробити перед копіюванням рядка?
4. В чому різниця між функціями strcmp() і strc n mp()?
5., В чому різниця між функціями strcpy() i strncpy()?.
6. За допомогою якої функції порівнюють рядки?
Дата добавления: 2015-07-17; просмотров: 150 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Int putchar(int c); | | | Лабораторна робота № 17-18 |