Визначення довжини рядків
Дуже часто при роботі з рядками необхідно знати, скільки символів містить рядок. Для з'ясування інформації про довжину рядка в заголовки string.h описана функція strlen (). Синтаксис цієї функції має вигляд:
size_t strlen (const char * string)
Ця функція в якості єдиного параметра приймає покажчик на початок рядка string, обчислює кількість символів рядка і повертає отримане беззнаковое ціле число (size_t). Функція sizeof () повертає значення на одиницю менше, ніж відводиться під масив через резервування місця для символу '\ 0'. Наступний фрагмент демонструє використання функції strlen ():
char Str [] = "ABCDEFGHIJK";
unsigned int i; i = strlen (Str);
Часто функція sizeof () використовується при введенні рядків в якості другого параметра конструкції cin.getline (), що
Значення рядків можуть копіюватися з однієї в іншу. Для цієї мети використовують ряд стандартних функцій, описуваних нижче.
Функція strcpy () має прототип;
char * strcpy (char * strl, const char * str2)
Наприклад, наступний фрагмент копіює в рядок Str значення рядка "Перевірка копіювання":
strcpy (Str, "Перевірка копіювання";
char strl [20] = "Перевірка копіювання";
// ptr тепер вказує на
Функція strncpy () відрізняється від strcpy () тем. що в її параметрах додається ще один аргумент, який вказує кількість символів, що не більше якого буде скопійовано. Її синтаксис має вигляд:
char * strncpy (char * strl, const char * str2,
Якщо довжина strl менше довжини str2, відбувається урізування символів:
char cLong [] = "+012345678901234567890123456789";
strncpy (cShort, cLong, 4);
cout «cShort« '\ n';
В результаті буде виведено:
Тобто з рядка cLong в рядок cShort скопійовано чотири перших символу, затерев тим самим початкове значення початку короткого рядка.
Функція strdup () в якості параметра отримує покажчик на рядок-джерело, здійснює розподіл пам'яті, копіює в відведену область рядок і повертає покажчик на початок отриманого рядка-копії. Синтаксис функції наступний:
char * strdup (const char * source)
char * strl = "Процедура не знайдена";
Конкатенація (або приєднання) рядків досить часто використовується для освіти нового рядка символів. Для цієї операції стандартна бібліотека пропонує функції strcat () і strncat ().
Функція strcat () має синтаксис:
char * strcat (char * strl, const char * str2)
В результаті роботи функції вміст рядка, на яку вказує str2, приєднується до вмісту рядка, на яку посилається strl. Повертається функцією покажчик strl вказує на результуючий рядок. При цьому величина строкового масиву strl повинна бути достатньою для зберігання об'єднаної рядки.
У наступному прикладі рядок str инициализируется за допомогою функції копіювання strcpy () і доповнюється підрядком, використовуючи функцію strcat ():
strcpy (str, "Для продовження");
strcat (str, "натисніть клавішу");
Функція strncatO також здійснює конкатенацію рядків, однак, приєднує лише вказане в третьому параметрі кількість символів (беззнаковое ціле):
char * strncat (char * strl, const char * str2, size_t num)
Функція повертає покажчик на початок сформованої рядки strl. Наступний приклад виробляє конкатенацію рядки strl з сімома першими символами подстроки str2:
char strl [90] = "Для продовження"; char str2 [30] = "натисніть клавішу"; strncat (strl, str2,7); cout «strl;
В результаті буде виведений рядок: "Для продовження натисніть".