Компиляторы языка Си обычно дополняются набором библиотечных функций для обработки строк. В системах ОС UNIX эти функции обычно содержатся в стандартной библиотеке Си /lib/libc.a
файл заголовков <string.h> — файл, в котором объявляются функции обработки строк, а так же типов, поименованных констант и макросов.
Программы, использующие эти функции, должны включать директиву препроцессора include:
#include <sting.h>
Один или более параметров этих функций имеют тип указателя на символ (char *). Это означает, что в качестве значения параметра ожидается адрес символа, например, начальный адрес символьного массива.
Некоторые функции обработки строк
char *strcat (char *s1, char *s2)
Функция присоединяет строку s2 к строке s1 и возвращает значение s1.
char *strncat (char *s1, char *s2, int n)
Функция присоединяет не более n символов строки s2 к строке s1 и возвращает значение s1.
int strcmp (const char *s1, const char *s2)
Функция сравнения двух строк, возвращает значение меньшее, равное или большее 0, если s1 лексикографически меньше, равна или больше, чем s2 (сравниваются коды символов).
int strncmp (const char *s1, const char *s2, int n)
Функция сравнения не более n символов двух строк, возвращает значение меньшее, равное или большее 0, если s1 лексикографически меньше, равна или больше, чем s2.
char *strcpy (char *s1, const char *s2)
Функция копирования s2 в s1, останавливается после копирования нулевого символа, возвращает s1.
char *strncpy (char *s1, const char *s2, int n)
Функция копирования не более n символов s2 в s1, останавливается после копирования нулевого символа, возвращает s1.
int strlen (const char *s)
Функция определения длины строки, возвращает количество символов вплоть до нулевого символа, но не включая его.
char *strchr (char *s, char c)
Функция возвращает указатель на первое вхождение символа c в строке s или, если такового не оказалось, NULL.
char *strrchr (char *s, char c)
Функция возвращает указатель на последнее вхождение символа c в строке s или, если такового не оказалось, NULL.
Пример 1
#include <stdio.h>
#include <string.h>
#define LINELEN 256
#define MINLEN 6
#define MAXLEN 12
char input[LINELEN+1], passwd [MAXLEN+1];
int change_passwd(void)   /*функция вводит новый пароль, содержащий не менее 6 символов*/
{
printf("Enter new password: ");
gets(input);
if (strlen(input)<MINLEN)
   {
   printf("Password too short.\n");
   exit(1);
   }
}
int verify_passwd(void) /*функция проверяет введеный пароль*/
{
printf("Enter password: ");
gets(input);
getpassword (password); /*копирует текущий пароль по заданному указателем адресу*/
if (strlcmp(input, password) != 0)
   {
   printf("Sorry.\n";
   exit(2);
   }
}