Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. Алгебраические дополнения. Миноры. Формулы разложения определителя по столбцу или строке
  2. Алгоритм поиска подстроки Кнута-Морриса-Пратта (на основе префикс-функции)
  3. Алгоритм поиска подстроки, основанный на конечных автоматах
  4. Анализ и преобразование слов в строке
  5. В заданной строке S заменить заданный символ C1 другим заданным символом C2.
  6. Включение или выключение повторяющихся строк
  7. ВНИМАНИЕ! Любое копирование и распространение данного материала ЗАПРЕЩЕНО!!!

ЛАБОРАТОРНАЯ РАБОТА

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

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

Стандартом языка Си определена библиотека функций для работы с символьными строками. Прототипы этих функций описываются в заголовочном файле 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 скопировать этот текст во вторую строку массива. Вывести на экран обе строки массива как символьные строки.

Замечание

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


Дата добавления: 2015-10-29; просмотров: 148 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Приклад діаграми компонентів, які утворюють середовище для функціонування системи класу ERP управління ресурсами автотранспортного підприємства| Создание новой модели. Добавление и соединение блоков.

mybiblioteka.su - 2015-2024 год. (0.008 сек.)