Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_C-09(string).doc
Скачиваний:
3
Добавлен:
21.11.2019
Размер:
92.16 Кб
Скачать

Рубанчик В.Б.

Лабораторная работа "Передача массивов в функции"

5/5

Лабораторная работа

Тема: Библиотечные функции для работы со строками

Цель работы: Изучить основные функции стандартной библиотеки Си для работы с символьными строками

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

Вычисление длины строки

Для вычисления длины строки применяется функция strlen (сокращение от string length), которая имеет следующий прототип:

size_t strlen(char* str)

Здесь str — строка символов, для которой вычисляется длина.

Функция возвращает длину строки.

Замечание

Тип возвращаемого значения size_t определяется стандартом как синоним беззнакового целочисленный типа для результата операции sizeof . Для компилятора BC++ 3.1 это unsigned int.

При подсчете длины строки функция strlen нуль-терминатор не учитывает:

C

т

р

о

к

а

\0

Длина строки

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

а) подключить заголовочный файл string.h;

б) вызвать функцию strlen.

Часто результат вычисления длины строки для дальнейшего использования сохраняют в переменной (типа int или unsigned int). Кроме того, вызов функции может быть также часть выражения, например: strlen(s)+3.

ЗАДАНИЕ 1 (вычисление длины строки)

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

а) Строка задана литералом "This is string".

б) Строка задана массивом символов из 20 элементов, который инициализируется текстом "This is string".

Копирование строк

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

C

т

р

о

к

а

\0

С

т

р

о

к

а

\0

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

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

Для копирования строк используется библиотечная функция strcpy (от string copy):

char* strcpy(char* dest, char* src) .

Здесь dest (от destination) — "копия строки", т.е. адрес, начиная с которого должна располагаться копия строки (указатель на выделенную область памяти).

src — "исходная строка", адрес памяти, начиная с которого расположен оригинал строки (имя массива или непосредственно литерал).

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

Чтобы скопировать строку, в программе необходимо

а) подключить заголовочный файл string.h;

б) подготовить память для копии строки (!!!);

в) вызвать функцию strcpy.

ЗАДАНИЕ 2 (копирование строки)

1. Какая ошибка допущена в следующем фрагменте программы:

char *s="12345";

char* s1;

strcpy(s1,s);

2. В программе определен символьный массив с двумя строками и 20 элементами в строке. Первая строка массива инициализирована текстом "original".

С помощью функции strcpy скопировать этот текст во вторую строку массива. Вывести на экран обе строки массива как символьные строки.

Замечание

Нужно помнить, что имя массива с одним индексом — это указатель на соответствующую строку двумерного массива.

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