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

7.2. Символьні функції

Прототипи символьних функцій описані в заголовному файлі <ctype.h> (<cctype>). Якщо у програмі включено заголовний файл <iostream>, файл <ctype.h> (<cctype>) можна не включати.

isalpha(c) – Істина (не нуль), якщо буква

islower(c) – Істина (не нуль), якщо мала літера

isupper(c) – Істина (не нуль), якщо прописна буква

isdigit(c) – Істина (не нуль), якщо цифра від 0-9

isalnum(c) – Істина (не нуль), якщо цифра 0-9 або буква

Приклад:

Програма запитує в користувача його ініціал. Якщо користувач вводить що-небудь відмінне від букв, програма виводить повідомлення про помилку і пропонує повторити введення.

#include <iostream>

using namespace std;

void main()

{

char initial;

cout << "Введіть ініціал ";

cin >> initial;

while (!isalpha(initial))

{

cout <<"\n Помилка \n";

cout << "Введіть ініціал ";

cin >> initial;

}

}

Функції перетворення символів.

tolower(c) – перетворить символ до нижнього регістра;

toupper(c) – перетворить символ до верхнього регістра.

7.3. Рядкові функції

Рядкові функції описуються у файлі <string.h> (<cstring>). Якщо у програмі включено заголовний файл <iostream>, файл <string.h> (<cstring>) можна не включати.

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

додати рядок s2 у кінець масиву символів s1. Масив s1 повинен мати достатньо вільних елементів.

char *strncat(char *s1, const char *s2, unsigned m);

додати m символів рядка s2 у кінець масиву символів s1. Масив s1 повинен мати достатньо вільних елементів.

char *strchr( char *s, char c);

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

int strcmp(const char *s1, const char *s2);

порівнюються рядки s1 і s2. Повертає:

якщо s1 < s2 - від’ємне значення;

якщо s1 > s2 - додатне значення;

якщо s1 і s2 збігаються – 0.

int strncmp(const char *s1, const char *s2, unsigned m);

теж, що і функція strcmp, але порівнюються перші m символів двох рядків.

Функції stricmp і strnicmp виконують ті ж дії, але без урахування регістра символів (тільки латинські символи).

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

копіює рядок s2 у рядок s1.

char *strncpy(char *s1, const char *s2, unsigned m);

копіює перші m символів рядка s2 у рядок s1.

unsigned strlen(const char *s);

повертає довжину s. (Довжина рядка – кількість символів без урахування завершального нуля '\0'.)

char *strlwr(char *s);

переводить рядок s у нижній регістр (тільки латинські символи).

char *strupr(char *s);

переводить рядок s у верхній регістр (тільки латинські символи).

char *strset(char *s, int ch);

заповнює весь рядок s символами ch.

char *strnset(char *s, int ch, unsigned m);

замінює перші m символів рядка s на символ ch.

char *strrev(char *s);

перетворить рядок s в зворотному порядку.

unsigned strcspn(const char *s1, const char *s2);

повертає позицію в рядку s1 символу з рядка s2.

char *strpbrk(char *s1, const char *s2);

повертає вказівку на перший символ рядка s1, який міститься в рядку s2.

char *strrchr(char *s, char c);

пошук останнього входження символу c у рядку s

unsigned strspn(const char *s1, const char *s2);

повертає позицію в рядку s1 символа, що не входить у рядок s2.

char *strtok(char *s1, const char *s2);

виділяє фрагменти рядка s1, розділені одно- або багатосимвольними роздільниками з рядка s2. При першому звертанні до strtok видається адреса першого фрагмента. Наступні виклики з завданням NULL замість першого аргументу (s1) будуть видавати адреси наступних фрагментів з рядка s1 доти, поки фрагментів не залишиться.

Функції перетворення рядків у числа.

int atoi(const char *s) – перетворює s до цілого (alphabetic to integer);

long atol(const char *s) – перетворює s до довгого цілого (alphabetic to long);

double atof(const char *s) – перетворює s до числа з плаваючої точкою (alphabetic to float).