Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_ekzamen_CPP.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
311.81 Кб
Скачать
  1. Строки символов. Основные функции для работы со строками.

Строкой называется массив символов, который заканчивается пустым символом. Обозначается этот символ ‘\0’ – рассматривается как один символ. Строка объявляется как обычный символьный массив:

char s1 [10];

В данном случае определяется массив длиной в 9 символов, т.к. 1 символ должен быть отведён под завершающий:

char *s2 - объявление строки

s2 – указатель на строку символов. Указатель – переменная, которая содержит адрес некоторой другой переменной.

s1 – также является указателем, но в отличие от s2, он является константным, т.е. указателем, которому нельзя присвоить значение.

s2 – переменная, которой можно присваивать значения.

Строковые константы заключаются в двойные кавычки. В отличие от символов, которые заключаются в одинарные кавычки.

При инициализации массива символов размерность массива лучше не указывать. Это действие выполнит компилятор, который подсчитает количество символов, добавит ещё 1 и поместит в конец строки пустой символ.

char s1 [] = “Гуманитарный факультет”;

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

Поэтому при работе со строками необходимо подключать эти файлы. Для ввода строк с консоли служит функция char *gets (char *str);

Эта функция записывает строку по адресу str и одновременно возвращает адрес введённой строки. Функция прекращает ввод, если встретит символ ‘\n’ – переход на следующую строчку или логическую константу EOF – конец файла, если строка читается из файла.

Символ перехода на новую строчку в саму строку не помещается. Вместо этого в конец строки помещается пустой символ ‘\0’. При неудачной попытке чтения функция возвращает NULL.

Для вывода строки на консоль используется стандартная функция:

int puts (const char *s);

в случае удачи возвращает неотрицательное число, а в случае неудачи возвращает логическую константу EOF.

Рассмотрим основные функции, которые позволяют выполнять действия над строками:

Функции сравнения, копирования и объединения строк.

    1. сравнение строк:

в этой группе функций, расположенных в string.h, используется 2 функции strcmp и strncmp.

Функция strcmp имеет вид:

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

она лексикографически сравнивает сроки str1 и str2. Функция возвращает

-1, если str1 < str2;

0, если str1 = str2;

1, если str1 > str2;

При сравнении символов фактически сравниваются числовые коды этих символов.

Функция strncmp имеет вид:

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

эта функция лексикографически сравнивает только n первых символов в строках str1 и str2, возвращает:

-1, если str1 < str2;

0, если str1 = str2;

1, если str1 > str2;

пример:

char str1 [] = “aa bb”;

char str2 [] = “aa aa”;

char str3 [] = “aa bb cc”;

printf (“%d\n”, strcmp (str1, str3)); /*-1*/

printf (“%d\n”, strncmp (str1, str3, 5)); /*0*/

    1. копирование строк:

используются 2 функции и находятся в string.h: strcpy, strncpy.

char*strcpy (const char *strDst, const char *strSrc);

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

char *strncpy (const char *strDst, const char * strSrc, int n);

копируется n символов из строки strSrc в строку strDst и возвращается указатель на строку strDst.

Пример:

char str1 [80];

char str2 [] = “copy string”;

strcpy (str1, str2);

strncpy (str1, str2, 4);

    1. соединение строк:

для объединения 2-х строк в одну используются 2 функции: strcat и strncat.

char *strcat (char *strDst, const char * strSrc);

эта функция присоединяет строку strSrc к строке strDst, стирая её нулевой байт. Если длина strSrc меньше, то присоединяются только символы strSrc, указатель возвращается на strDst.

пример:

char str1 [80] = “string”;

char str2 [] = “catenation”;

char str3 [] = “ yes no”

strcat (str1, str2); /*str1 = “string catenation”*/

strncat (str1, str3, 4); /*str1 = “string catenation yes”*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]