Обработка строк
Копирование
Присоединение
Определение длины строки.
Обработка строк. Сравнение
Обработка строк. Поиск лексем в строке
Обработка строк. Поиск символа в строке
Задачи на лабораторную работу
494.99K
Category: programmingprogramming

Семинар10_Обработка строк (станд функции)

1. Обработка строк

Обзор функций из библиотеки <string.h>

2. Копирование

• Функция strcpy:
char* strcpy(char* s1,const char* s2)
копирует в строку s1 строку s2. В результате действия функции полностью
заменяется строка s1.
• Функция strncpy:
char* strncpy(char *s1, const char *s2, n);
– копирует в строку s1 n первых символов строки s2. В результате действия
функции полностью заменяется строка s1.
Внимание! Функции не отслеживают выход за границу массива.

3. Присоединение

• Функция strcat:
char* strcat(char *s1, const char *s2);
присоединяет строку s2 в конец строки s1. Возвращает видоизмененную строку s1
• Функция strncat:
char* strncat(char *s1, const char *s2, n);
присоединяет первые n символов строки s2 в конец строки s1. Возвращает
видоизмененную строку s1
Внимание! Функции не отслеживают выход за границу массива.

4.

Терминальный ноль надо добавлять
вручную, если копируется не вся строка, а
только ее часть.
Автоматически ноль не ставится

5. Определение длины строки.

Функция strlen:
size_t strlen(const char *s);
возвращает количество символов в строке. Без учета нулевого символа

6. Обработка строк. Сравнение

• Функция сравнивает две строки s1 и s2.
int strcmp(const char *s1, const char *s2);
• Функция сравнивает n первых символов
строк s1 и s2
int strncmp(const char *s1, const char *s2, n);
Возвращают p – признак сравнения.
p<0 ≡ s1<s2
p>0 ≡ s1>s2
p=0 ≡ s1=s2

7. Обработка строк. Поиск лексем в строке

Функция strtok(st, sep) Ищет в строке st лексемы, разделенные символами
из списка sep. Возвращает указатель на найденную в строке лексему или
NULL, если ничего не найдено.
char *strtok(char *st, const char *sep);
st – указатель на строку в которой ищем,
sep – указатель на строку, содержащую набор символов-разделителей
Последовательный вызов функции разбивает строку на лексемы,
разделенные заданными разделителями.
Выделяет часть строки st, отделенную одним из символов строки sep.
Последовательный вызов функции strtok разбивает строку st на части
(лексемы).
Если в качестве первого аргумента указывается NULL, функция продолжит
поиск лексем начиная с текущего адреса.

8.

9. Обработка строк. Поиск символа в строке

char *strchr (const char *st, int ch);
Ищет первое вхождение символа с кодом ch в строке st
Возвращает указатель на искомый символ или NULL если не
найден.
char *strrchr (const char *st, int ch);
Ищет последнее вхождение символа с кодом ch в строке st
Возвращает указатель на искомый символ или NULL если не
найден.

10.

11.

size_t strcspn(const char *str1, const char *str2);
определяет длину начального сегмента строки str1, в котором нет символов,
входящих в строку str2. (Возвращает индекс первого символа в строке str1, который
совпадает с одним из символов строки str2). Если нет совпадений возвращается длина
строки.
size_t
strspn(const
char *str1, const char *str2);
возвращает
длину начального
сегмента строки str1, содержащего
только те символы, которые
входят в строку str2 (возвращает
индекс первого символа в строке
str1, который не совпадает ни с
одним из символов в строке str2).
Если все символы совпадают,
возвращается длина строки

12.

Пример:
1. Ввести предложение (слова разделены одним или несколькими
пробелами).
2. Создать массив слов, содержащихся в предложении
3. Посчитать количество слов, содержащих введенный символ
4. Посчитать среднюю длину слова в предложении и вывести слово
наиболее приближенное по длине к этому значению
5. Отсортировать массив по алфавиту
6. Найти самую часто встречающуюся букву

13.

14.

15.

16.

17. Задачи на лабораторную работу

• Ввести предложение. Найти самое короткое слово в предложении и
слово первое по алфавиту. Заменить одно из слов на новое слово.
Вывести слова из предложения в алфавитном порядке.
• Ввести массив из строк (не более 5). Каждая строка – фамилия.
Найти самую длинную фамилию. Вывести фамилии, начинающиеся
на гласную букву в алфавитном порядке.
• Ввести предложение и набор символов. Вывести только те слова
предложения, где не содержится ни одна из букв набора.
English     Русский Rules