Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_OTAM_sem1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
949 Кб
Скачать
☆

Передача рядка у функцію

Якщо потрібно передати в деяку функцію рядок, то передається як параметр ім'я рядка-масиву або покажчик на рядок.

Використання імені масиву. Запишемо визначення функції, що друкує рядок, і виклик цієї функції:

void print(char client[]){

cout << "Name of client: " << client << endl;

}

...

int main(){

char client1[] = "Serg";

...

print(client1);

...

Використання покажчика на рядок. Якщо є покажчик на масив-рядок:

char *client1Ptr= client1;

то можна передати у функцію покажчик:

print(client1Ptr);

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

Введення/виведення символів і рядків

Розглянемо функції, якіпризначені для введення/виведення символів і рядків і належать до стандартної бібліотеки (заголовний файл stdio.h).

Введення по одному символу з потоку введення – здійснюється із клавіатури за допомогою функції getchar(), що повертає код уведеного символу:

int getchar(void);

Виведення одного символу на екран – здійснюється функцією putchar(), параметром якої є код виведеного символу:

int putchar(int ch);

Введення символу без відображення на екрані – здійснюється функцією getch()з бібліотеки conio. (заголовний файл conio.h).

char getch(void);

У цієї функції, як і в getchar немає параметру. Крім того, значення, що повертається функцією, може бути присвоєно символьній змінній типу char.

Введення рядка символів із клавіатури – здійснюється функцією gets(), параметром якої є покажчик на початок того рядка, у який вводяться дані. Функція повертає той же самий покажчик:

char *gets(char *string);

Функція gets читає все, що набирається доти, поки не натиснута клавіша Enter. Ця функція дозволяє вводити пробіли, чим відрізняється від іншої функції введення scanf, що читає всі символи доти, поки не зустрінеться пробіл (табуляція, кінець рядка).

Виведення рядка символів на екран – здійснюється функцією puts(), параметром якої є покажчик на початок того рядка, з якого виводяться дані. Функція повертає кількість виведених символів:

int puts(char *string);

Бібліотечні функції для роботи з символами та рядками

У мовах С/С++ передбачені спеціальні функції, призначені для роботи із символами (табл. 1). Частина функцій перевіряють одиночні символи й повертають ненульове значення (true) або нуль (false). Наприклад, isdigit(c) дозволяє перевірити, чи є зміннаc однієї із цифр між 0 і 9. Інша частина функцій у таблиці 10.1 забезпечує конвертування регістра букв. Так, tolower(c) повертає версію букви c у нижньому регістрі, тобто малу літеру. Наприклад, інструкція cout <<tolower('F') виведе на екран символ f.

Наступний фрагмент коду використовується як елемент циклу do-while, у якому користувач для продовження циклу повинен увести 'Y'. Цикл буде виконуватися незалежно від того, у якому регістрі уведений символ: 'y' або 'Y'.

do{ // тіло циклу

}

while (toupper(choice) == 'Y')

Параметром функцій у таблиці 5.1 є змінна c типу char або int, а для звертання до функцій підключається заголовний файл ctype.h.

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

Тип

Функція

Опис

int

isalnum(c)

повертає true, якщо c – буква або цифра

int

isalpha(c)

повертає true, якщо c – буква

int

isblank(c)

повертає true, якщо c – пробіл або символ табуляції

int

isdigit(c)

повертає true, якщо c – цифра

int

islower(c)

повертає true, якщо c – символ у нижньому регістрі

int

isupper(c)

повертає true, якщо c – символ у верхньому регістрі

int

isspace(c)

повертає true, якщо c – пробіл, табуляція, повернення каретки, новий рядок

int

tolower(c)

повертає символ c у нижньому регістрі

int

toupper(c)

повертає символ c у верхньому регістрі

Для обробки рядків призначені функції, прототипи яких утримуються у файлі string.h. Найбільш популярні з них наведені в таблиці 2.

Табл. 2. Функції обробки рядків

Прототип

Опис

int strlen(char*s)

Довжина рядка, але без нуль-символу кінця рядка

int strcmp(char*s1, char*s2)

Порівнює рядки s1 і s2, повертає 0 (рівні), < 0 (s1<s2), > 0 (s1 > s2)

char *strcpy(char*s1, char*s2)

Копіювання рядка s2 у рядок s1; повертає s2

char *strcat(char*s1, char*s2)

Додає s2 до рядка s1; перший символ s2 записується поверх нуль-символу s1; повертає s1

char *strchr (char*s, char ch)

Пошук у рядку s першого входження символу ch

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