Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskaya_razrabotka_Osnovy_programmirovania_na_yazyke_Ci_-_Atmaykina_Galina_Nikolaevna.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
99 Кб
Скачать
☆

Обработка строк

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

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

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

Для использования функций обработки строк необходимо подключить в программе библиотеку string.h (и stdlib.h).

Функция

Назначение

Тип возвращаемого результата

strlen(str);

Определение длины строки str (завершающий символ \0 не учитывается).

int

strrev(str);

Инвертирование (реверс, переворот) строки str.

сhar

strlwr(str);

Преобразование букв верхнего регистра в строке в соответствующие буквы нижнего регистра (строчные). Только латинские буквы.

char

strupr(str);

Преобразование букв нижнего регистра в строке в соответствующие буквы верхнего регистра (прописные). Только латинские буквы.

char

strcat(str1, str2);

Присоединение строки str2 к строке str1 (объединение, конкатенация). Результат - сцепленная строка str1.

сhar

strncat(str, str2, k);

Добавление к строке str1 k начальных символов из строки str2.

char

strcmp(str1, str2);

Сравнение строк str1 и str2.

Возвращаемое значение

меньше нуля, если str1<str2;

больше нуля, если str1>str2;

равно нулю, если строки равны, т.е. совпадают по текущей, а не по объявленной длине и содержат одни и те же символы.

Если длины строк равны, то происходит поэлементное сравнение символов до первого несовпадающего символа, и, та строка считается большей, в которой первый несовпадающий символ имеет наибольший код.

int

strncmp(str1, str2, k);

Сравнение первых k символов строк str1 и str2.

int

strcpy(str1,str2);

Копирование строки str2 (включая \0 символ) в строку str1. Результатом является строка str1.

char

strncpy(str1, str2, k);

Копирование в начало строки str1 k первых символов из строки str2.

char

Структурный тип данных (Структуры)

В языке Си понятие структуры аналогично понятию записи (record) в языке Паскаль. Структурный тип данных обычно используется при разработке информационных систем, баз данных.

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

В отношении структуры можно выполнять следующие действия: копировать; выполнять операции присваивания; передавать функциям в качестве аргумента, а функции могут возвращать их в качестве результата; инициализировать. Структуры нельзя сравнивать.

Синтаксис описания структуры:

struct [имя типа]

{ тип 1 переменная 1;

тип 2 переменная 2;

…………………..…….;

тип n переменная n;

};

Описание начинается со служебного слова struct, за которым может следовать имя типа структуры. Далее это имя может служить кратким обозначением той части описания, которая заключена в фигурные скобки. В фигурных скобках определяется последовательность переменных величин, называемых элементами структуры, которые могут иметь различные типы. В конце обязательно ставится символ «;» (т.к. это оператор).

Объявления переменных списка имеют тот же самый синтаксис, что и объявление обычных переменных, за исключением того, что объявления не могут содержать спецификаторов классов памяти или начальных значений. Элементы структуры могут быть любого типа (базового, массивом, указателем, объединением или структурой). Их имена могут совпадать с именем обычных переменных, т.к. они всегда различны по контексту.

Имена элементов внутри объявленной структуры должны быть различными, внутри разных структур могут совпадать.

Описание структуры - это тип, то есть когда мы описываем структуру, мы просто описываем новый тип. Описание структуры, не содержащей списка переменных, не резервирует памяти, она просто описывает шаблон-образец структуры. Однако если структура имеет имя, то этим именем далее можно пользоваться при определении структурных объектов.

Например, требуется организовать сведения о выплате студентам стипендии:

Элементы такой структуры (фамилия, курс, группа, стипендия) называются полями. Каждому полю должно быть поставлено в соответствие имя и тип.

Для рассмотренного примера определение соответствующего структурного типа может быть следующим:

struct student

{

char fam[30];

int kurs;

char grup[3];

float stip;

};

После этого student становится именем структурного типа, который может быть назначен некоторым переменным.

В соответствии со стандартом Си это нужно делать так:

struct student stud1, stud2;

Служебное слово struct можно опускать и писать так:

student stud1, stud2;

где stud1 и stud2 – переменные структурного типа.

Допускаются и другие варианты описания структурных переменных. Можно вообще не задавать имя типа, а описывать сразу переменные:

struct

{

char fam[30];

int kurs;

char grup[3];

float stip;

} stud1, stud2;

Обращение к элементам (полям) структурной величины производится с помощью уточненного имени следующего формата: