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

 значение 0, если строки содержат одинаковое

 количество одинаковых символов, расположенных

 в одинаковом порядке, при первом несовпадении

 символов функция возвращает разницу между

 кодам символа строки str1 и кодом соответствующего

символа строки str2;

srtcpy(str1,str2)

– копирует содержимое строки str2

 в строку str1, массив str1 должен быт

 достаточно большим, что бы в него могла

 поместится строка str2, если строка str1 содержит

 какие-то символы, то при копировании они пропадут;

strcspn(str1,str2)

– просматривает строку str1 и выдает

 длину подстроки, отсчитываемой с начала

строки str1, символы которой полностью

 отсутствуют в строке str (см. также функцию strspn());

strlen(str)

 – возвращает длину строки str без

 учета нулевого завершающего байта;

strlwr(str)

 – преобразует буквы верхнего регистра

 в строке в соответствующие буквы нижнего

 регистра (речь идет только о буквах латинского

 алфавита);

strncat(str1,str2,int kol)

– присоединяет kol символов строки

 str2 к строке str1(остальные замечания

 см. у функции strcat());

strpbrk(str1,str2)

– ищет в строке str1 первое появление

любого из множества символов, входящих

в строку str2;

strrchr(str, int c

) – ищет в строке str последнее вхождение

 символа с,  возвращает указатель на этот

символ в строке str, если символ с в строке

не обнаружиться, функция возвращает нулевой

указатель (см. также функция strchr());

strset(str,int c)

 – заполняет строку str заданным символом с;

strspn(str1,str2)

– просматривает строку str1 и выдает длину подстроки,

отсчитываемой с начала строки str1, символы которой

совпадают с любым символом из строки str2;

strstr(str1,str2)

– ищет в строке str1 подстроку str2, возвращает

 указатель на тот элемент в строке str1, с которого

начинается подстрока str2; если подстрока str2 не

обнаружена в строке str1, функция возвращает 0;

strtok(str1,str2)

 – функция разбивает строку str1 на подстроки

 согласно символам ограничителям, заданным

в строке str2, функция strtok вводит символ ‘\0’ после

каждой подстроки (более подробно об этой функции см. ниже);

strupr(str)

 – преобразует буквы нижнего регистра в строке

в соответствующие буквы верхнего регистра

 (речь идет только о буквах латинского алфавита);

Ниже приведена программа, поясняющая принцип работы функции strtok. В результате работы программы образуется массив указателей mass, сформированный из исходной строки.

#include<stdio.h>

#include<string.h>

#include<conio.h>

define KOL_SL 20 // Количество слов в строке

 void main(void)

{

clrscr();

char *str1=”Иванов Сидоров,Петров+Винокуров/Лунёв”,*mass[KOL_SL];

char *ptr=str1; //В этой строке хранится копия исходной строки

char *str2=” ,+/”; //Символы-разграничители слов в исходной строке

int I,j=1;

printf(“\n Исходная строка: ”);

 puts(ptr);

printf(“\n Список слов: ”);

//Первый вызов функции, выделяем первое слово

ptr=strtok(str1,str2);

mass[0]=ptr;

for(;;)

       {

Ptr=strtok(0,str2);//Выделяем остальные слова

If(ptr) {mass[j]=ptr; j++}

Else break;

}

for(i=0;i<j;;i++) printf(“\n%s”,mass[i]);

getch();

}

/* Выдача на экран

Исходная строка: Иванов Сидоров,Петров+Винокуров/+Лунев

Список слов:

Иванов

Сидоров

Петров

Винокуров

Лунев */

               Функция strtok() поддерживает внутренний указатель обрабатываемой строки. Если первый аргумент функции strtok() указывает на строку, внутренний указатель устанавливается в начало этой строки. Если первый аргумент функции равен 0, функция strtok() продолжает процесс обработки предыдущей строки, начиная с позиции, запомненной на предыдущем шаге, и продвигая внутренний указатель по мере получения очередной подстройки. Таким образом функция strtok() «проходит» всю строку. Не забудте создать строки, которую вы собираетесь разбить на подстроки.

ФУНКЦИИ ПРОВЕРКИ И ПРЕОБРАЗОВАНИЯ СИМВОЛОВ

(ФАЙЛ – ctype.h)

  • isdigit(intc) – дает значение не нуль, если с – цифра(0…9), и нуль в противном случае.
  • isspace(intc) – дает значение не нуль, если с – обобщенный пробел: символ пробела, символ табуляции, символ конца абзаца и другие, и нуль в противном случае;
  • isalpha(intc) – дает значение не нуль, если с – код буквы (A..Z, a..z), и нуль в противном случае;
  • isalnum(intc) – дает значение не нуль, если с – код буквы или цифры (A..Z, a..z, 0..9), и нуль в противном случае.