Обработка фрагментов строк - часть 2
strcpy(s1, &s2[k]); //копирует правую подстроку из s2 в s1
strncpy(s1, &s[2],n); //копирует среднюю подстроку из s2 в s1
Длина строк в рассматриваемых системах программирования определяется одной из системных функций LEN (QBasic), Length (Паскаль) или strlen (Си). Единственным аргументом у каждой из них является анализируемая строка.
Для конкатенации (объединения) строк в Паскале и QBasic используется довольно естественная операция сложения:
А$="Здравствуй, "+NAME$+"!" s1:='3дравствуй, '+nаmе+'!'
В Си эта операция реализуется с помощью одной из следующих функций:
strcat(s1, s2); //добавляет s2 к s1
strncat(s1, s2, n); //добавляет и первых символов из s2 к s1
Поиск вхождения одной строки в другую дает ответ на вопрос, содержится ли значение одного текста в другом и с какой позиции обнаружено это вхождение. Нулевая позиция в качестве результата такой операции соответствует отрицательному ответу.
Функция, определяющая в QBasic, входит ли значение строки А2$ в строку А1$, имеет вид:
INTSR(A1$,A2$) или INSTR(k,Al$,А2$)
В первом случае анализ вхождения ведется с начала строки AI$, во втором случае — начиная с k-й позиции строки AI$. Последний вариант позволяет последовательно определить все вхождения искомого образца.
Примерно такими же возможностями обладает функция pos(si,s2) в Паскале. Для поиска повторного вхождения можно удалить уже исследованный фрагмент и снова обратиться к функции роз.
Гораздо более разнообразные варианты поиска вхождений предлагает Си:
strstr (s1,s2); //ищет вхождение строки s2 в s1
strchr(s1,с); //ищет вхождение символа "с" с начала строки s1
strrchr(s1,с); //ищет вхождение символа "с" с конца строки s1
strpbrk(s1,s2); //ищет вхождение любого символа из s2 в s1
strspn(s1,s2); //ищет вхождение любого фрагмента, составленного
//из символов s2 в s1