Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
30.05.2020
Размер:
428.13 Кб
Скачать

Функция int _stricmp (const char *s1, const char *s2) работает аналогично, но уже не

выдает предупреждений:

cout <<

_stricmp("abc", "ABC")<< endl; // возвращает 0

cout <<

_stricmp("ABC", "ABC")<< endl; // возвращает 0

cout

<<

_stricmp("Ab", "ABC")<< endl; // возвращает значение < 0

cout

<<

_stricmp("ABd", "abc")<< endl; // возвращает значение > 0

Функция int strnicmp (char *s1, const char *s2, size_t n)

проводит сравнение только первых n символов двух строк без учета регистра, т.е. без различия между прописными и строчными буквами.

cout << strnicmp("abc", "ABC", 2)<< endl; // возвращает 0

// warning C4996: 'strnicmp' was declared deprecated cout << strnicmp("ABC", "AaC", 2)<< endl; // возвращает значение > 0

// warning C4996

cout << strnicmp("Ab", "ABC", 2)<< endl; // возвращает 0 // warning C4996

cout << strnicmp("ABd","acc",2)<< endl; //возвращает значение < 0 // warning C4996

Функция int _strnicmp (const char *s1, const char *s2, size_t count) работает аналогично,

но уже не выдает предупреждений:

// возвращает 0

cout <<

_strnicmp("abc", "ABC", 2)<< endl;

cout <<

_strnicmp("ABC", "AaC", 2)<< endl;

//

возвращает значение > 0

cout

<<

_strnicmp("Ab", "ABC", 2)<< endl;

//

возвращает 0

cout

<<

_strnicmp("ABd","acc",2)<< endl;

//возвращает значение < 0

Поиск символа в строке

Функция char * strchr (const char *s, int c)

выполняет поиск символа с кодом c в строке s слева направо и возвращает

указатель на позицию его первого вхождения в строку s. Если символа нет, то возвращается указатель NULL. 0-символ также включается в поиск, поэтому функция может использоваться для поиска в строке позиции 0-символа.

const int

MAX =

80;

 

char c='\0';

 

 

char

s1[MAX]="ab\0cdef";

//указатель на символ

char

*

s=

strchr(s1, c);

if (s)

cout<<" n

=" << int(s-s1) << endl;

//n=2 - позиция символа

Функция char * strrchr (const char *s, int c)

выполняет поиск символа с кодом c в строке s справа налево и возвращает указатель на позицию его последнего вхождения в строку s. Если символа нет, то возвращается указатель NULL. 0-символ также включается в поиск, поэтому функция может использоваться для поиска в строке позиции 0-символа.

const int MAX =

80;

 

char c='\0';

 

 

char

s1[MAX]="ab\0cdef";

//указатель на символ

char

*s= strrchr(s1, c);

if (s) cout<<" n

=" << int(s-s1) << endl;

//n=2 - позиция символа

Проверка принадлежности символа некоторому множеству

#include <ctype.h>

Функции данной группы можно использовать для проверки принадлежности символа множеству букв, разделителей, знаков пунктуации, цифр и т.д.

прототип

описание функции

 

int isdigit (int c)

возвращает отличное от 0 значение, если элемент с является

 

цифрой, в противном случае – 0

 

Программирование – лекция 13 (лекции Стрикелевой Л.В.)

17

 

 

int isalfa (int c)

возвращает отличное от 0 значение, если

элемент

с

является

 

буквой, в противном случае – 0

 

 

 

int isalnum (int c)

возвращает отличное от 0 значение, если

элемент

с

является

 

цифрой или буквой, в противном случае – 0

 

 

 

int isxdigit (int c)

возвращает отличное от 0 значение, если элемент с является 16-

 

ичной цифрой, в противном случае – 0

 

 

 

int islower (int c)

возвращает отличное от 0 значение, если

элемент

с

является

 

строчной буквой (нижний регистр), в противном случае – 0

int isupper(int c)

возвращает отличное от 0 значение, если

элемент

с

является

 

прописной буквой (верхний регистр), в противном случае – 0

int isspace (int c)

возвращает отличное от 0 значение, если

элемент

с

является

 

разделителем: переход на новую строку (‘\n’), пробел (‘ ‘), переход

 

на новую страницу (‘\f’), горизонтальная табуляция (‘\t’),

 

вертикальная табуляция (‘\v’), в противном случае – 0

 

 

int iscntrl (int c)

возвращает отличное от 0 значение, если элемент с является

 

управляющим символом (с кодами 0-31, 127), в противном случае

 

– 0

 

 

 

int ispunct (int c)

возвращает отличное от 0 значение, если элемент с является

 

символом пунктуации, отличным от пробела, цифры или буквы, в

 

противном случае – 0

 

 

 

int isprint (int c)

возвращает отличное от 0 значение, если элемент с является

 

любым печатным символом, включая пробел, в противном случае

 

– 0

 

 

 

int isgraph (int c)

возвращает отличное от 0 значение, если элемент с является

 

печатным символом, отличным от пробела, в противном случае – 0

Приведенный ниже оператор позволяет выдать на экран символ и его код: cout << ch << " = " << ch+0 << endl; (преобразование типа к целому)

Поиск строки в строке

Функция char * strstr (char *s1, const char *search)

выполняет поиск строки search в строке s1 и возвращает указатель на первое вхождение search в строку s1. Если строка не обнаружена, то возвращается указатель

NULL.

const int MAX = 80;

char s1[MAX]="abcdef", s2[MAX]="cd"; char *s=strstr(s1, s2);

if (s) cout<<" n =" << int(s-s1) << endl; //n=2 - позиция строки

Функция size_t strspn (const char *s1, const char * charSet)

определяет и возвращает длину начальной части строки s1, состоящей только из символов, содержащихся в строке charSet. 0-символ в сравнении не участвует.

const int MAX = 80;

char s1[MAX]="abcdef",

s2[MAX]="aabb";

size_t n = strspn(s1,

s2);

//2

Функция size_t strcspn (char *s1, const char *charSet)

определяет и возвращает длину начальной части строки s1, состоящей из символов, не содержащихся в строке charSet. 0-символ в сравнении не участвует. Если строка s1 начинается с символа, встречающегося в строке charSet, возвращается нуль. Если строка s1 не содержит ни одного символа строки charSet, возвращаемое значение совпадает с длиной строки s1.

const int

MAX = 80;

 

char s1[MAX]="abcdef", s2[MAX]="aabb";

size_t n

= strcspn(s1, s2);

//0

Программирование – лекция 13 (лекции Стрикелевой Л.В.)

18

 

Соседние файлы в папке Лабораторні роботи