понедельник, 30 ноября 2015 г.

Обработка символьных строк



В языках Си/Си++ нет специально определенного строкового типа данных. Символьные строки организуются как массивы символов, последним из которых является символ \0..
Строка описывается как символьный массив:
char STR[20];
char S[10]="cTpoKa"; -инициализация значения
char S[]="cTpoKa";
char S [10] = { 'с' ,'Т',‘р',‘о',‘К','а','\0'} ; 
Отдельные символы строки идентифицируются индексированными именами.
S [ 0 ] = 'С' , S[5]='a'.
Пример 1. Обработка строк обычно связана с перебором всех символов от начала до конца. Однако, ввод-вывод строк удобно делать с помощью функций gets() и  puts() из библиотеки <string.h>
В примере с помощью цикла символы в строке s1 заменяются звёздочкой. Признаком конца  перебора символов является обнаружение нулевого символа в конце строки. То же самое можно сделать с помощью указателя ( в программе - символы в строке s заменяются на ^).
На экран выводится следующее:


Пример 2. Использование библиотеки  <string.h>
Многие нужные функции реализованы в библиотеке <string.h>. При необходимости можно ознакомиться с описанием функций здесь.
В примере ниже  функция strchr(p,c) возвращает указатель на первый символ строки, на которую указывает указатель р, совпадающий со значением переменной с.
В конце программы строка выводится с найденного символа, и выводится на экран его номер.

Пример 3. Обработка строк в функции
Эта программа  делает такую же замену, как в примере 1. Однако, это действие оформлено в виде функции, в которую передаются указатель на строку и символ для замены.



Задачи для самостоятельного решения

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

2. Написать  программу с функцией поиска первого вхождения шаблона в текст. В качестве
первого параметра функция принимает указатель на строку, в которой нужно искать шаблон. В
качестве второго параметра указатель на строку-шаблон, которую нужно найти. Функция
возвращает позицию первого вхождения строки-шаблона, если он присутствует в строке
(помните, что в C++ принято считать с 0), и -1, если шаблона в тексте нет. В основной
программе инициализировать строку при описании, строку-шаблон вводить с клавиатуры.
Проверить правильность работы написанной функции с помощью функции strstr(s1,s2) из
библиотеки <string.h>
Контрольный пример:
Строка "moja mama varit mamalygu na balkone"
Шаблоны: "mama" ,  "mamalygu"

Комментариев нет:

Отправить комментарий