Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Операции со строками

Определение 1

Операции со строками — это операции с последовательностями символов.

Введение

В составе программного блока строки могут выступать в следующих качествах:

  1. В формате строковых констант.
  2. Символьные массивы.
  3. Посредством указателя, что тип является символьным.
  4. В формате строкового массива.

Кроме этого, необходимо предусмотреть определённые объёмы памяти, где будут сохраняться строки. Любой последовательный символьный набор, который заключён в кавычки, может восприниматься в качестве строковой константы. Чтобы иметь возможность корректно вывести строку, необходимо её заканчивать комбинацией «\0». Если объявляется строковая константа, то эта комбинация прибавляется к ней по умолчанию. То есть, последовательный набор знаков, которые заявлены строковой константой, разместится в компьютерной памяти вместе с нулевым байтом. Для сохранения этих данных назначается комплект ячеек памяти. Это означает, что строка является символьным массивом. Чтобы сохранить в виде кода один символьный знак, в памяти выделяется один байт.

Операции со строками

Почти все действия языка Си, в которых участвуют строки, применяют систему указателей. Чтобы разместить строки символов в памяти нужно:

  1. Выделить участок памяти для массива.
  2. Осуществить процедуру, позволяющую инициализировать строку.

Чтобы предоставить память для сохранения строки, допустимо воспользоваться процедурами динамического распределения памяти. Обязательно нужно учесть достаточный строчный размер:

char *name;

name = (char*)malloc(10);

scanf("%9s", name);

Здесь строка вводится функцией scanf(), и необходимо помнить, что её размер составляет максимум девять знаков. Оканчиваться строка должна комбинацией \0. Но следует отметить, что функция scanf() служит больше для задания не строчных знаков, а слов. Существует ещё формат "%s", позволяющий выполнить ввод строки вплоть до очередного пустого символа, например, пробела, табуляции или символа перевода строки. А, чтобы ввести всю строку вместе с пробелами, можно применить такой вариант:

char gets(char );

или её аналог:

«Операции со строками» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

char gets_s(char );

Аргументом функции пересылается указатель строки, куда выполняется ввод. Функция выдаёт запрос пользователю на ввод строки, которую она последовательно пересылает в массив до момента нажатия пользователем клавиши Enter.

Чтобы вывести строку, возможно использование указанных выше методов:

printf("%s", str); // str — является указателем строки.

Или в урезанном виде:

printf(str);

Можно применить так же:

int puts (char *s);

Она выполняет печать строчных данных S и перевод курсора к новой строке (что отличает её от printf()). Функцию puts() ещё возможно применить, чтобы вывести строковые константы, которые закрыты в кавычки.

Чтобы выполнить ввод символьного знака, необходимо применить соответствующую функцию:

char getchar();

Она выполняет возврат величины символа, который вводится с клавиатуры. Этот способ можно использовать для сохранения консольного окна после завершения работы программы до нажатия клавиши Ввод.

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

char putchar(char);

Она выполняет возврат значения выводимого символа и отображает на мониторе символ, который передаётся как аргумент.

Для внедрения в строковую константу необходимых служебных символов, применяются специальные символьные комбинации. Например, если надо внедрить в строку символику «двойные кавычки», перед ним нужно вставить знак обратный слеш: \». Под строковые константы отводится статическая память. Адрес начала символьного набора, заключённого в двойные кавычки, воспринимается в качестве адреса строки. Строковые константы могут использоваться для формирования пользовательского диалога в командах типа printf(). Когда определяется символьный массив, нужно обозначить компилятору требуемый для массива объём памяти.

char m[82];

Компилятор способен сам определить объём символьного массива, когда инициализация массива задаётся при объявлении как строковая константа:

char m2[]="Гористые скалы уснули весной.";

char m3[]={«Т», «р», «о», «п», «ы», «в», «г», «о», «р», «а», «х», «п», «а», «х», «н», «у», «т», «в», «о», «д», «о», «й»,'\0'};

В данном случае m2 и m3 выступают как указатели на начальные компоненты массивов:

m2 аналогично &m2[0]

m2[0] обозначает ‘Г’

m2[1] обозначает ‘o’

m3 обозначает &m3[0]

m3[2] обозначает ‘о’

Когда объявляется символьный массив, и он инициализируется как строковая константа, имеется возможность явного указания его размера. Но при этом заявленный объём массива обязан превышать объём строковой константы, которая его инициализирует:

char m2[80]=" Гористые скалы уснули весной.";

Чтобы задать строку, можно сделать так:

char *m4;

При этом, если объявляется массив переменной m4, то возможно назначить адрес массива:

m4 = m3;

*m4 аналогично m3[0]='Т'

*(m4+1) аналогично m3[1]='р'

В данном случае m3 выступает как фиксированный указатель. Изменять m3 невозможно, поскольку это влечёт за собой смену адреса массива в памяти. Для m4 таких ограничений нет. К указателю может применяться процедура смещения на очередной символ:

m4++;

Массивы символьных строк

Бывают моменты, когда требуется описать массив символьных строк. Тогда возможно применять строковый индекс, чтобы иметь возможность обращаться к набору различных строк.

char *poet[4] = {«Мороз и солнце!», «День чудесный!», «Ещё ты дремлешь» , «Друг прелестный!»}

Здесь poet это массив, который состоит из четырёх указателей на строки символов. Все символьные строки являются массивами символов, это объясняет наличие четырёх указателей на массивы. При этом poet[0] указывает на начало первой строки:

*poet[0] является 'М'.

Выполнять инициализацию требуется по правилам, которые установлены для массивов. Если текстовая информация заключена в кавычки, то это равнозначно инициализации всех строк в массиве. Смежные символьные наборы должны разделяться запятыми. Необходимо заметить, что имеется возможность явного задания размеров символьных строк как указано ниже:

char poet [4] [23];

Дата написания статьи: 12.12.2019
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot