Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_1 часть_укр.doc
Скачиваний:
2
Добавлен:
09.11.2019
Размер:
1.41 Mб
Скачать

10.1.3. Рядки як масиви

У мові С рядок подається як одновимірний масив змінних типу char, останнім елементом якого автоматично є нульовий символ '\0'. Можливі кілька видів оголошень масиву символів. По-перше, це може бути абстрактний рядок без вказівки розміру масиву:

char name[] = "Andrey";

Тут число елементів масиву визначається автоматично й дорівнює 7 (з урахуванням останнього елемента '\0'). По-друге, масив символів може мати більше елементів, чим містить абстрактний рядок:

char name[10] = "Andrey";

Тут три останніх елементи масиву не використовуються. Нарешті, рядок може бути оголошений за допомогою покажчика. Перед використанням покажчика рядок вже повинен існувати, наприклад:

char name[] = "Andrey";

char *namePtr;

namePtr = name;

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

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

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

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

void print(char client[]){

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

}

...

int main(){

char client1[] = "Serg";

...

print(client1);

...

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

char *client1Ptr= client1;

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

print(client1Ptr);

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

10.1.4. Уведення/виведення символів і рядків

Розглянемо функції, які призначені для уведення/виведення символів і рядків і належать до стандартної бібліотеки (заголовний файл 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);

10.1.4. Функції обробки рядків

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

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

Прототип

Опис

int strlen(char*s)

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

char *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