Del(st, strstr (st,st1) - st, strlen ( st1) );

cout << st << endl;

}

}

void del(char *st,int k,int n)

{

Int i;

for( i = k ; i < strlen ( st )-n; i++)

st[i] = st[i+n];

st[i] = '\0';

}

void* memchr (const void *st, int s ,int n); ¾ функція шукає символ "s" у рядку *st довжиною n байт, тобто в блоці пам'яті, на який указує покажчик st. Якщо символ sзнайдений, функція повертає покажчик на цей символ, у противному випадку повертає NULL.

 

void* memcmp (const void *st, const void * s , n); і

void* memicmp (const void *st, const void * s ,int count);¾ функції порівнюють n байт із двох буферів на її початок яких указують s1 і s2.

Функція повертає значення

< 0 ¾ якщо s1 < s2;

=0 ¾ якщо s1 = s2;

>0 ¾ якщо s1 > s2;

 

char *strset (char *st, int ch); ¾ функція заповнює рядок st символом ch і повертає покажчик на отриманий рядок.

 

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

Ці функції знаходяться у файлі <stdlib.h>

int atoi (const char *s); ¾ перетворить рядок s у число типу int. Повертається отримане число.Число 0, якщо зустрінеться символ, що не може бути перетворений. Рядок повинний містити коректне число, наприклад "2345", і мати наступну структуру:

 

[ проміжки ] [знак числа] [ цифри].

long atol (const char *s);¾ перетворить рядок s у число типу long int (аналогічна функції atoi.)

double atof (const char *s); ¾ перетворить рядок символів у дійсне число double. Якщо при перетворенні зустрічається символ, що не може бути перетворена функція повертає 0.

Оброблюваний рядок повинний мати структуру:

[проміжки] [знак числа] [цифра. цифра] [літера е,Е,d або D] [знак порядку] [цифри порядку], наприклад ”-12345.123 ” або ”-12. 345123 Е3 ”

 

char *ecvt (double vl, int n, int *dec, int *sign ); ¾ перетворить число vl у рядок символів, кількість яких дорівнює n символів цифр. Положення десяткової крапки від першої цифри числа повертається в змінній, на яку вказує dec. Знак числа повертається в змінну на який указує sign. Якщо sign = 0 ¾ число додатнє, інакше ¾ від’ємне. Отриманий рядок зберігається у внутрішній пам'яті функції, покажчик повертається на початок сформованого рядка.

 

сhar *fcvt (double vl, int n, int *dec, int *sign ); ¾ аналогічна попередній функції, але для ecvt- параметр decзадають загальна кількість цифр, то для fcvt- кількість цифр після десяткової крапки.

сhar *gcvt (double vl, int n, сhar *buf); ¾ перетворить число vl у рядок, що поміщає в буфер, покажчик на початок якого є buf, n ¾ число цифр у символічному записі перетвореного числа. Отриманий рядок містить символ знака числа і десяткової крапки, якщо число містить менше десяткових цифр, ніж n. У цьому випадку молодша цифра дробової частини відкидається. Якщо перетворене число не міститься в задану кількість цифр n, функція генерує символьний запис в експонентній формі, включаючи в рядок символ Е и знак порядку. Функція повертає покажчик на початок сформованого рядка.

strlen (st) - повертає довжину st без нуль - термінатора '\0'.

 

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

Ці функції знаходяться у файлі <ctype.h>:

isgraph (s) ¾ повертає значення ”істина” тобто не нуль, якщо s є друкованим символом і “неістина ” (тобто 0) , якщо s є проміжком або яким - небудь не відображуваним символом.

isprint (s) ¾ повертає значення ”істина” тобто не нуль , якщо s є друкованим символом, включаючи проміжок і ”неістина” (тобто 0) у всіх інших випадках.

ispunct (s) ¾ повертає значення "істина" тобто не нуль , якщо s є знаком пунктуації(будь-який друкований символ крім проміжку і “неістина” (тобто 0) в інших випадках.

 

isdigit (s) ¾ повертає значення "істина" тобто не нуль , якщо s є цифрою від 0 до 9 і “неістина” (тобто 0) в інших випадках.

isalnum (s) ¾ повертає значення "істина", тобто не нуль, якщо s є цифрою або літерою (заголовною або строковою ) і “неістина” (тобто 0) у всіх інших випадках (тобто перевіряє алфавітні і цифрові символи).,

 

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

 

toupper (s) ¾ перетворить символ s до верхнього регістра;

 

atoi (s) ¾ перетворить рядок s до ціле число;

 

atol (s) ¾ перетворить рядок s до довгого цілого;

 

atof (s) ¾ перетворить рядок s до числа з крапкою.

 

Розглянемо ряд прикладів з використанням строкових функцій .

Приклад 3.5 Ввести список прізвищ (рядків) і відсортувати його за алфавитом.

 

//P3_5.CPP сортування списку прізвищ за алфавитом

#include <string.h>

#include < iostream>

Using namespace std;

Void main( )

{

char mst[ 5] [15];

char *ps[5], *ptr;

int і, n, k;

cout << "Введіть прізвища \n";

for( i = 0; i < 5; i++)

{

gets (mst [i] );

ps[i] = mst[i];

}

cout << "\n\t Вихідний список\n\n";

for( i = 0; i < 5; i++)

puts ( ps[ i ] );

 

// Сортування масиву

 

n = 5;

for (i = 1; i < n; i++) //кількість переглядів

for ( k = 0; k < ( n – i ); k++)

if ( strcmp ( ps[k], ps[k+1] ) > 0)

{

ptr = ps[k];

ps[k] = ps[k+1];

ps[k+1] = ptr;

}

cout << "\n\n\t Відсортований список \n\n";

for ( i = 0; i < 5; i++)

puts ( ps[ i ] );

}

Приклад 3.6 Ввести рядок і видалити в ньому зайві проміжки.

 

//P3_6.CPP ( видалення зайвих проміжків

#include <string.h>

#include < iostream>

Using namespace std;

Void main()

{

char st[] = "Прийшла весна в мої краї.";

Int i,j;

for (i = 0; i < strlen(st)-1; i++)

{

if ((st[i] == ' ') &&(st[i+1] == ' '))

{

for (j = i+1; j < strlen(st); j++)

st[j-1]=st[j];

I-- ;

}

cout << st;

Return 0;

}

 

Приклад 3.7 Визначити позицію входження підрядка в рядок.

 

//P3_7.CPP пошук позицій входження підрядка в рядок.

#include <string.h>

#include < iostream>

Using namespace std;

const int m = 50;

Void main()

{

char *pt, mainstr[m], substr[m];

int n, k = 0;

cout << "Введіть рядок " << endl;