Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratorny_praktikum_pravka_Kruglikov.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
545 Кб
Скачать
☆
  1. Методические указания

  • При выполнении работы используются динамические массивы. Определяются сами массивы, затем пользователь вводит реальную длину массива и работает с массивом той длины, которую он сам указал.

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

Лабораторная работа № 3 “Строки”

Цель: Изучение символьных и строковых переменных и способов их обработки в языке Си.

  1. Краткие теоретические сведения

Для представления символьной (текстовой) информации можно использовать символы, символьные переменные и символьные константы.

Символьная константа представляется последовательностью символов, заключенной в кавычки: “Начало строки \n”. В C/C++ нет отдельного типа для строк. Массив символов - это и есть строка. Количества элементов в таком массиве на один элемент больше, чем изображение строки, т. к. в конец строки добавлен ‘\0’ (нулевой байт или нуль-терминатор).

    1. Работа со строками

Присвоить значение массиву символов с помощью обычного оператора присваивания нельзя. Поместить строку в массив можно либо при вводе, либо с помощью инициализации:

char s[] = “ABCDEF”;

Функция scanf() может использоваться для чтения строк из потока ввода, для чего надо указать спецификатор формата %s ‑ который заставляет функцию scanf() читать символы, пока не встретится специальный символ. Прочитанные символы помещаются в массив символов, на который указывает соответствующий аргумент, и результат завершается нулевым символом. Применительно к scanf() специальные символы ‑ это пробел, новая строка, табуляция, вертикальная табуляция или перевод формата. Функция scanf() читает строку до первого специального символа. Это означает, что нельзя использовать scanf() для чтения строки типа «this is a test», поскольку первый пробел завершит процесс ввода. Поэтому рекомендуется использовать специальные функции для чтения строк из консоли ‑ gets(), которая читает строку, пока не встретится возврат каретки.

Функция gets() читает строку символов, введенных с клавиатуры и помещает их по адресу, указанному в аргументе. Можно набирать символы, пока не будет нажат ввод. Символ, соответствующий клавише ввод - возврат каретки, - не станет частью строки. Вместо этого в конце строки появится нулевой символ, и gets() закончит работу. Функция gets() возвращает указатель на str. Прмер использования команды gets(0):

char str[80];

gets(str);

Для вывода строки на консоль можно использовать функции printf() и puts. Для использования функции printf необходимо указывать спецификатор формата %s. Функция puts() выводит передаваемый ей аргумент на экран, завершая вывод переходом на новую строку. Примеры использования этих функций:

printf ("Here's your string: %s", str);

puts(str);

Для работы со строками существует специальная библиотека string.h. Примеры функций для работы со строками из библиотеки string.h:

Функция

Прототип и краткое описание функции

strcmp

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

Сравнивает строки str1 и str2. Если str1< str2, то результат отрицательный, если str1 = str2, то результат равен 0, если str1> str2, то результат положительный.

strcpy

char* strcpy(char*s1, const char *s2);

Копирует байты из строки s1 в строку s2

strdup

char *strdup (const char *str);

Выделяет память и перености в нее копию строки str.

strlen

unsigned strlen (const char *str);

Вычисляет длину строки str.

strncat

char *strncat(char *s1, const char *s2, int kol);

Приписывает kol символов строки s1 к строке s2.

strncpy

char *strncpy(char *s1, const char *s2, int kol);

Копирует kol символов строки s1 в строку s2.

strnset

char *strnset(char *str, int c, int kol);

Заменяет первые kol символов строки s1 символом с.

Строки, при передаче в функцию, в качестве фактических параметров могут быть определены либо как одномерные массивы типа char[], либо как указатели типа char*. В отличие от обычных массивов в этом случае нет необходимости явно указывать длину строки.

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