Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Стандартные функции для работы со строками.

Поиск

Функции для работы со строками, прототипы которых описаны в заголовочном файле string.h.

Сравнение строк. Для сравнения строк используются функции strcmp и strncmp.

Функция

int strcmp (const char *str1, const char *str2);

лексикографически сравнивает строки str1, str2 и возвращает –1, 0 или 1, если строка str1 соответственно меньше, равна или больше строки str2.

Функция

int strncmp (const char *str1, const char *str2, size_t n);

лексикографически сравнивает не более чем n первых символов из строк str1 и str2. Функция возвращает –1, 0 или 1, если первые n символов из строки str1 соответственно меньше, равны или больше первых n символов из строки str2.

Пример.

// пример сравнения строк

#include <stdio.h>

#include <string.h>

int main()

{

char str1[] = "aa bb";

char str2[] = "aa aa";

char str3[] = "aa bb cc";

printf("%d\n", strcmp(str1, str3));

// печатает: -1

printf("%d\n", strcmp(str1, str1));

// печатает: -0

printf("%d\n", strcmp(str1, str2));

// печатает: 1

printf("%d\n", strncmp(str1, str3, 5));

/ печатает: 0

return 1;

}

Копирование строк. Для копирования строк используются функции strcpy и strncpy.

Функция

char *strcpy (char *str1, const char *str2);

копирует строку str2 в строку str1. Строка str2 копируется полностью, включая завершающий нулевой байт. Функция возвращает указатель на str1. Если строки перекрываются, то результат непредсказуем.

Функция

char *strncpy (char *str1, const char *str2, size_t n);

копирует n символов из строки str2 в строку str1. Если строка str2 содержит меньше чем n символов, то последний нулевой байт копируется столько раз, сколько нужно для расширения строки str2 до n символов. Функция возвращает указатель на строку str1.

Пример.

char str1[80];

char str2 = "Copy string.";

strcpy (str1, str2);

printf (str1); // печатает: Copy string.

 

Соединение строк. Для соединения строк в одну строку используются функции strcat и strncat.

Функция

char* strcat (char *str1, const char *str2);

присоединяет строку str2 к строке str1, причем завершающий нулевой байт строки str1 стирается. Функция возвращает указатель на строку str1.

Функция

char* strncat (char *str1, const char *str2, size_t n);

присоединяет n символов из строки str2 к строке str1, причем завершающий нулевой байт строки str1 стирается. Функция возвращает указатель на строку str1. если длина строки str2 меньше n, то присоединяются только символы, входящие в строку str2. После соединения строк к строке str1 всегда добавляется нулевой байт. Функция возвращает указатель на строку str1.

Пример.

#include <stdio.h>

#include <string.h>

int main ()

{

char str1[80] = "String ";

char str2 = "catenation ";

char str3 = "Yes No";

strcat (str1, str2);

printf ("%s\n", str1);

// печатает: String catenation

strncat (str1, str3, 3);

printf ("%s\n", str1);

 // печатает: String catenation Yes

return 1;

}

 

Поиск символа в строке. Для поиска символа в строке используются функции strchr, strrchr, strspn, strcspn и strpbrk.

Функция

char* strchr (const char *str, int c);

ищет первое вхождение символа, заданного параметром c, в строку str. В случае успеха функция возвращает указатель на первый найденный символ, а в случае неудачи – NULL.

Функция

char* strrchr (const char *str, int c);

ищет последнее вхождение символа, заданного параметром c, в строку str. В случае успеха функция возвращает указатель на последний найденный символ, а в случае неудачи – NULL.

Пример.

#include <stdio.h>

#include <string.h>

int main ()

{

char str[80] = "Char search";

printf ("%s\n", strchr (str, 'r'));

// печатает: r search

printf ("%s\n", strrchr (str, 'r'));

// печатает: rch

return 1;

}

Функция

size_t strspn (const char *str1, const char *str2);

возвращает индекс первого символа из строки str1, который не входит в строку str2.

Функция

size_t strcspn (const char *str1, const char *str2);

возвращает индекс первого символа из строки str1, который входит в строку str2.

Пример.

int main ()

{

char str[80] = "123 abc";

printf ("n = %d\n", strspn (str, "321");

// печатает: n = 3

printf ("n = %d\n", strcspn (str, "cba");

// печатает: n = 4

return 1;

}

Функция

char* strpbrk (const char *str1, const char *str2);

находит первый символ в строке str1, который равен одному из символов в строке str2. В случае успеха функция возвращает указатель на этот символ, а в случае неудачи – NULL.

Пример.

char str[80] = "123 abc";

printf ("%s\n", strpbrk (str, "bca"));

 // печатает: abc

Сравнение строк. Для сравнения строк используются функция strstr.

Функция

char* strstr (const char *str1, const char *str2);

находит первое вхождение строки str2 (без конечного нулевого байта) в строку str1. В случае успеха функция возвращает указатель на найденную подстроку, а в случае неудачи – NULL. Если указатель str1 указывает на строку нулевой длины, то функция возвращает указатель str1.

Пример.

char str[80] = "123 abc 456;

printf ("%s\n", strstr (str, "abc");

// печать: abc 456

 

Разбор строки на лексемы. Для разбора строки на лексемы используется функция strtok.

Функция

char* strtok (char *str1, const char *str2);

возвращает указатель на следующую лексему (слово) в строке str1, в которой разделителями лексем являются символы из строки str2. В случае если лексемы закончились, то функция возвращает NULL. При первом вызове функции strtok параметр str1 должен указывать на строку, которая разбирается на лексемы, а при последующих вызовах этот параметр должен быть установлен в NULL. После нахождения лексемы функция strtok записывает после этой лексемы на место разделителя нулевой байт.

Пример.

#include <stdio.h>

#include <string.h>

int main()

{

char str[ ] = "12 34 ab cd";

char *p;

p = strtok (str, " ");

while (p)

{

printf ("%s\n", p);

 // печатает в столбик значения: 12 34 ab cd

p = strtok (NULL, " ");

}

return 1;

}

 

Определение длины строки. Для определения длины строки используется функция strlen.

Функция

size_t strlen (const char *str);

возвращает длину строки, не учитывая последний нулевой байт. Например,

char str[] = "123";

printf ("len = %d\n", strlen (str));

// печатает: len = 3

 



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 329; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.6.9 (0.006 с.)