Результат виконання програми


Вхідні рядки text і textР ініціалізовані першими рядками вже віршив, що використовувалися. Далі об’явлений допоміжний рядок string, розмір якого заданий з деяким запасом по відношенню до вхідних рядків.

Функція strlen повертає ціле незнакове число – довжину рядка-аргументу без нульового символу.

Функція strcpy повністю копіює свій другий аргумент-рядок у перший (text і textР послідовно копіюються у string).

Функція strncpy копіює задане третім аргументом кількість символів із другого аргументу у перший поверх записи, що мається, (9 знаків із text копіюються у string). Для того, щоб відрізати непотрібні знаки у десятковий елемент записаний нульовий символ.

Функція strncat додає задане третім аргументом кількість знаків із другого у перший. Перший із додаткових символів записується поверх нульового символу першого аргументу (у рядок string додається 6 символів із text).

Функції strcpy, strncpy, strncat повертають свій перший аргумент. Тому можливий безпосередній вивід результату, яке зроблено для функції strncat.

Функція strtok розбиває рядок на окремо лексеми по заданому розподільчому знаку-рядку. Для розбиття тексту у цій якості природно використовувати пробіл, але можна будь-яке сполучення символів. Розділимо рядок text по розподільчому знаку – пробілу, а рядок textР – по букві t. Кожний виклик strtok відокремлює від тексту одну лексему. При першому виклику strtok аргументами є рядок, котрій потрібно розбити (text) і рядок-показник (“…”). Робота функції strtok полягає у тому, що вона шукає символ, який не є показником, а є початком лексеми, і повертає показник на цій символ, котрій присвоюється іншому проміжному показнику (lexP). Потім функція знаходить наступний показник, тобто кінець лексеми, і заміщує його нульовим символом. Показник на символ, що наступний за показником, є початок наступної лексеми, яку функція strtok зберігає. При наступних викликах (у циклі while) ім’я рядка, що розбитий, замінюється на NULL, що вказує функції повторити операцію, починаючи з символу, який збережений при попередньому виклику. Коли рядок, що розбитий, закінчений і strtok повертає NULL, то цикл (while)зупиняється.

NULL – це символьна константа, визначення як нуль (нульовий показник) в iostream.h і деяких заголовочих файлів стандартної бібліотеки.

Роздільник може бути заданий як показник на рядок (markP) і містить не тільки один символ. В отриманих окремих лексемах розділовий символ не зберігається. Це наочно бачимо на прикладі розділового рядка textP – буква t зникла із тексту.

Функція strtok модифікує рядок, оставляючи тільки першу лексему.

Оглядові запитання

1. Де розміщена функція обробки рядків?

2. Які вхідні рядки ініціалізовані першими?

3. Якою довжини об’явлений допоміжний рядок string по відношенню до вхідних рядків?

4. Що повертає функція strlen?

5. Що копіює функція strcpy і куди?

6. Що копіює функція strncpy і куди?

7. Що виконує функція strncat?

8. Що виконує функція strtok?

9. Як виконується цикл while?

10. Що таке NULL?



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: