Шаг 63.
Функции для работы со строками

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

    Здесь мы перечислим основные функции, предназначенные для работы со строками. Большинство прототипов этих функций (если не оговорено особо) находится в заголовочном файле string.h.

Таблица 1. Основные функции работы со строками
Функция
Назначение
int getchar();
Возвращает значение символа(если он есть), который пользователь набрал на клавиатуре. После ввода символа нужно нажать клавишу Enter. Заголовочный файл - stdio.h
int getch();
Аналогично предыдущему, только символ на экране не отображается. Используется чаще для организации задержки выполнения программы. Заголовочный файл - conio.h
int putchar(int c);
Выводит символ c на экран. В случае успеха возвращает сам символ c, в противном случе - EOF. Заголовочный файл - stdio.h
char *gets(char *s);
Читает символы, включая пробелы и табуляции, до тех пор, пока не встретится символ новой строки, который заменяется нулевым символом. Последовательность прочитанных символов запоминается в области памяти, адресуемой аргументом s. В случае успеха возвращает аргумент s, в случае ошибки - нуль. Заголовочный файл - stdio.h
int puts(const char *s);
Выводит строку, заданную аргументом const char *s. Заголовочный файл - stdio.h
char *strcat(char *dest, const char *scr);
Объединяет исходную строку scr и результирующую строку dest, присоединяя первую к последней. Возвращает dest.
char *strncat(char *dest, const char *scr, int maxlen);
Объединяет maxlen символов исходной строки scr и результирующую строку dest, присоединяя часть первой к последней. Возвращает dest.
char *strchr(const char *s, int c);
Ищет в строке s первое вхождение символа c, начиная с начала строки. В случае успеха возвращает указатель на найденный символ, иначе возвращает нуль.
char *strrchr(const char *s, int c);
Аналогично предыдущему, только поиск осуществляется с конца строки.
int strcmp(const char *s1, const char *s2);
Сравнивает две строки. Возвращает отрицательное значение, если s1<s2; нуль, если s1==s2; положительное значение, если s1>s2. Параметры - указатели на сравниваемые строки.
int stricmp(const char *s1, const char *s2);
Аналогично предыдущему, только сравнение осуществляется без учета регистра символов.
int strncmp(const char *s1, const char *s2, int maxlen);
Аналогично предыдущему, только сравниваются первые maxlen символов.
int strnicmp(const char *s1, const char *s2, int maxlen);
Аналогично предыдущему, только сравниваются первые maxlen символов без учета регистра.
char *strcpy(char *dest, const char *src);
Копирует исходную строку src и завершающий ее нулевой символ в строку результата dest. Возвращает dest.
char *strncpy(char *dest, const char *src, int maxlen);
Аналогично предыдущему, только копируются первых maxlen символов.
int strcspn(const char *s1, const char *s2);
Возвращает длину максимальной начальной подстроки строки s1, не содержащей символов из второй строки s2.
char *strdup(const char *s);
Копирует строку во вновь выделенный блок памяти, самостоятельно выделяя из кучи необходимое для размещения копии количество байтов. Возвращает указатель на сдублированную строку. Удалить эту строку можно с помощью функции free(), указав в качестве параметра указатель на эту строку. Если памяти недостаточно - возвращается нуль.
int strlen(const char *s);
Возвращает длину строки s - количество символов, предшествующих нулевому символу.
char *strlwr(char *s);
Преобразует все прописные (большие) буквы в строчные (малые) в строке s.
char *strupr(char *s);
Преобразует все строчные (малые) буквы в прописные (большие) в строке s.
char *strnset(char *s, int c, int n);
Заполняет строку s символами c. Параметр n задает количество размещаемых символов в строке.
char *strpbrk(const char *s1, const char *s2);
Ищет в строке s1 первое вхождение любого символа из строки s2. Возвращает указатель на первый найденный символ или нуль - если символ не найден.
char *strrev(char *s);
Изменяет порядок следования символов в строке на обратный (кроме завершающего нулевого символа). Функция возвращает строку s.
char *strset(char *s, int c);
Заменяет все символы строки s заданным символом c.
int strspn(const char *s1, const char *s2);
Вычисляет длину максимальной начальной подстроки строки s1, содержащей только символы из строки s2.
char *strstr(const char *s1, const char *s2);
Ищет в строке s1 строку s2. Возвращает адрес первого символа вхождения строки s2. Если строка отсутствует - возвращает нуль.
char *strtok(char *s1, const char *s2);
Делит исходную строку s1 на лексемы (подстроки), разделенные одним или несколькими символами из строки s2.

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

Таблица 2. Функции взаимосвязи чисел и строк
Функция
Назначение
double atof(const char *s);
Преобразует строку s в число с плавающей точкой типа double. Заголовочный файл - math.h
int atoi(const char *s);
Преобразует строку s в число типа int. Возвращает значение или нуль, если строку преобразовать нельзя. Заголовочный файл - stdlib.h
long atol(const char *s);
Преобразует строку s в число типа long. Возвращает значение или нуль, если строку преобразовать нельзя. Заголовочный файл - stdlib.h
char *itoa(int value, char *s, int radix);
Преобразует значение целого типа value в строку s. Возвращает указатель на результирующую строку. Значение radix - основание системы счисления, используемое при преобразовании (от 2 до 36). Заголовочный файл - stdlib.h
char *ecvt(double value, int ndig, int *dec, int *sign);
Преобразует значение value типа double в завершающуюся нулем строку. Возвращает адрес статического буфера, который перезаписывается при каждом вызове этой функции. Чтобы сохранить результат, можно воспользоваться, например, функцией strcpy(). Значение ndig - количество цифр результата. Значение dec - указатель на целое значение, где размещается позиция десятичной точки (результирующая строка не содержит символа десятичной точки). Отрицательное значение означает, что десятичная точка находится слева от первой цифры строки. Заголовочный файл - stdlib.h
char *gcvt(double value, int ndec, char *buf);
Преобразует значение value типа double в завершающуюся нулем строку, которая адресуется аргументом buf. Способ представления выбирается функцией (обычный или экспоненциальный). Значение ndec - количество десятичных разрядов (не гарантируется, что будет именно столько разрядов в числе), не более 18. Заголовочный файл - stdlib.h

    Можно воспользоваться имеющимися в таблицах ссылками для перехода к примерам использования большинства указанных здесь функций.

    На следующем шаге мы приведем более подробный материал по некоторым из приведенных функций.


Предыдущий шаг Содержание Следующий шаг