Лабораторная работа № 4
Тема: Программирование с использованием строк
Цель: Научиться работать с векторными данными языка «С»: строки. Изучить правила объявления строки и обращение к их элементам, библиотечные функции для работы со строками. Освоить основные алгоритмы обработки строк.
Краткая теория
Строка – упорядоченный набор символов (или массив символов).
Язык «С» используется способ организации строк с завершающим нулем, т.е. строка – это массив символов, последним элементом которого является ноль:
Символ 1 |
Символ 2 |
… |
Символ N |
Ноль (0) |
Объявление строк имеет следующий синтаксис:
char имя[размер]; //Без инициализации
char имя[размер] = “строка”; //С инициализацией
char имя[] = “строка”; //С инициализацией, без указания размера
Примеры:
char str_a[5];
char str_b[10] = “String!”;
char str_c[] = “ String!”;
Объявление константных строк:
const char имя[рразмер] = строковая_константа;
Пример:
const char str[]=”Constant string!”;
Ввод и вывод строк осуществляется с помощью функций библиотеки stdio.h.
В функциях форматированного ввода и вывода строка задается спецификатором типа %s. При этом необходимо учитывать, что символами разделителями в функции scanf являются: пробел, табуляция, перевод строки. Поэтому, используя данную функцию невозможно ввести строку, состоящую из нескольких строк.
Альтернативой являются функции строкового ввода и вывода:
char *gets(char *);
int puts(const char *);
Функция ввода строки осуществляет ввод до нажатия клавиши ВВОД, позволяя тем самым вводить строки из нескольких слов.
Также в библиотеке stdio.h присутствуют функции форматированного ввода и вывода из строк:
int sscanf(const char *buffer, const char *format[, address, ...]);
int sprintf(char *buffer, const char *format[, argument, ...]);
Основные функции для обработки строк содержаться в библиотеках stdlib.h и string.h.
Функции библиотеки stdlib.h (только стандартные)
Заголовок функции |
Описание функции |
int atoi(const char *string); |
Преобразование строки в целое число. |
long int atol(const char *string); |
Преобразование строки в длинное целое число. |
long long int atoll(const char *string); |
Преобразование строки в 64-разрядное целое число. |
double atof(const char *string); |
Преобразование строки в вещественное число двойной точности. |
Функции библиотеки string.h (только стандартные)
Заголовок функции |
Описание функции |
size_t strlen(const char *string); |
Определение длины строки |
char * strcpy(char * targetstring, const char *sourcestring); |
Копирование второй строки в первую |
char * strncpy(char * targetstring, const char * sourcestring, size_t num); |
Копирование первых num символов второй строки в первую строку |
int strcmp(const char *string1, const char *string2); |
Сравнение двух строк: >0 - больше, <0 – меньше, ==0 – равны. |
int strncmp(const char *string1, const char *string2, size_t num); |
Сравнение первых num символов двух строк: >0 - больше, <0 – меньше, ==0 – равны. |
char * strcat(char *targetstring, const char *sourcestring); |
Объединение двух строк. |
char * strncat(char *targetstring, const char *sourcestring, size_t num); |
Объединение строк (только первые num символов строки sourcestring) |
char * strchr(const char *string, int c); |
Поиск символа C в строке string. |
char * strrchr(const char *string, int c); |
Поиск символа C в строке string (в обратном направлении) |
char * strpbrk(const char *string, const char *charset); |
Поиск первого вхождения в строку string любого из символов строки charset |
char * strstr(const char *string, const char *substring); |
Поиск строки substring в строке string: возвращает указатель на первое вхождение |
size_t strcspn(const char *string, const char *charset); |
Поиск строки substring в строке string: возвращает индекс первого символа в первом вхождении |
char * strtok(char *string, const char *charset); |
Поиск первого слова в строке string. В строке charset передаются символы разделители. |