Програмування в c builder

Введення рядків з клавіатури

Можна використовувати оператор cin. Операція введення записується як:

При використанні оператора cin необхідно враховувати наступне:

- Введення закінчується після натискання клавіші Enter;

- Якщо в рядку є прогалина, то символи після пробілу не вводяться;

- Якщо кількість введених символів менше оголошеної довжини рядка, то інші поля не заповнюються. Тому необхідно зробити попереднє обнулення рядка;

- Якщо кількість введених символів більше оголошеної довжини рядка, то вводяться все символи до натискання клавіші Enter.

В якості оператора введення при роботі з рядками замість оператора записи в потік cin >> краще використовувати функцію cin.getline (), так як потоковий оператор введення ігнорує вводяться прогалини, а крім того, може продовжити введення елементів за межами масиву, якщо під рядок відводиться менше місця, ніж вводиться символів. Функція cin.getline () приймає два параметри: перший аргумент вказує на рядок, в яку здійснюється введення, а другий - число символів, що підлягають введенню.

cout <

cout <

Оголошена на початку програми рядок myString може прийняти тільки три значущих символу і буде завершена нуль-термінатором. Усі наступні символи, що вводяться в цей строковий масив, будуть відкинуті. Як видно з прикладу, при використанні функції cin.getline () другим параметром слід вказувати число, менше або рівне розміру введеної символьного рядка.

Іноді більш зручний введення за допомогою функції gets ().

При використанні функції gets () необхідно враховувати наступне:

- Якщо кількість введених символів менше оголошеної довжини рядка, то інші поля не заповнюються. Тому бажано зробити попереднє обнулення рядка;

- Кількість введених символів не повинно бути більше оголошеної довжини рядка (функція gets не контролює кількість символів, і це може привести до непередбаченої помилку);

- Введення закінчується після натискання клавіші Enter.

cout <

cout <

Визначення довжини рядків

Дуже часто при роботі з рядками необхідно знати, скільки символів містить рядок. Для з'ясування інформації про довжину рядка в заголовки string.h описана функція strlen (). Синтаксис цієї функції має вигляд:

size_t strlen (const char * string)

Ця функція в якості єдиного параметра приймає покажчик на початок рядка string, обчислює кількість символів рядка і повертає отримане беззнаковое ціле число (size_t). Функція strlen () повертає значення на одиницю менше, ніж відводиться під масив через резервування місця для символу ' # 92; 0 '. Наступний фрагмент демонструє використання функції strlen ():

char Str [] = "ABCDEFGHIJK";

int i = 0; // i - лічильник букв

RUS ( "Перевірка копіювання"); // Занесення російського тексту в bufRus

while (bufRus [i]! = '# 92; 0') // Перевірка на кінець копійованого масиву

У бібліотеці string.h для копіювання використовують ряд стандартних функцій.

Функція strcpy () має прототип:

char * strcpy (char * strl, const char * str2)

Наприклад, наступний фрагмент копіює в рядок Str значення рядка "Перевірка копіювання":

strcpy (Str, RUS ( "Перевірка копіювання"));

strcpy (Str, RUS ( "Перевірка копіювання"));

// ptr тепер вказує на

При виконанні програми буде виведений текст: копіювання.

Функція strncpy () відрізняється від strcpy () тим, що в її параметрах додається ще один аргумент, який вказує кількість символів, що не більше якого буде скопійовано. Її синтаксис має вигляд:

char * strncpy (char * strl, const char * str2, size_t num)

Якщо довжина strl менше довжини str2, відбувається урізування символів:

char cLong [] = "+012345678901234567890123456789";

strncpy (cShort, cLong, 4);

cout <

cout <

В результаті буде виведено:

Тобто з рядка cLong в рядок cShort скопійовано чотири перших символу, замінивши, таким чином, початкове значення початку короткого рядка.

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

char * strdup (const char * source)

str1 = new char [21]; // динамічне виділення пам'яті

strcpy (str1, RUS ( "Процедура не знайдена"));

Конкатенація (зчеплення) рядків

Конкатенація або зчеплення рядків може бути реалізовано шляхом додавання одного масиву в інший:

char Str1 [10], Str2 [10], Str3 [20], Str4 [11] = ", and # 92; 0 ";

Схожі статті