Функции для обработки строк




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

Символьные строки

Цель работы

Приобретение навыков работы со строками.

Темы лекций для предварительной проработки

Модуль 2.4. Операторы организации циклической обработки

Модуль 2.5. Числовые и символьные массивы

Планируемые результаты обучения

В результате выполнения лабораторной работы должны быть сформированы и развиты следующие профессиональные компетенции:

на уровне знаний:

воспроизводить синтаксис объявления одномерного, многомерного массива как числового, так символьного;

объяснять стандартные приемы для работы с числовыми и символьными массивами.

на уровне понимания:

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

на уровне применения:

выполнять операции с символьными массивами;

осуществлять ввод и вывод символьных массивов;

применять стандартные функции для работы со строками.

на уровне анализа:

анализировать разработанную программу с целью выявления логических ошибок;

локализовать ошибки выполнения программы с целью их исправления;

– анализировать результаты работы программы.

на уровне синтеза:

использовать математические методы и вычислительные алгоритмы для решения практических задач;

проектировать структуру программы;

организовать работу в группе при совместном решении задачи;

– проектировать тестирование программы;

защищать выполненную самостоятельную работу;

принимать верное решение при коллективном решении задачи.

на уровне оценки:

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

оценивать возможности структурных типов данных в организации данных программы

.

Теоретические сведения

Массив символов и их инициализация

При определении строк необходимо сообщить компилятору требуемый размер памяти.

Первый способ - инициализация массива при помощи строковой константы.

Например:

char m1[]="Только ограничьтесь одной строкой.";

Здесь оператор инициализировал внешний по умолчанию массив m1 для указанной строки. Этот вид инициализации является краткой формой стандартной инициализации массива:

char m1[]={'T','o','л','ь','k','o','

','o','г'','p','a','н','и','ч','ь','т','e','c','ь','

',o','д','н','o','й','

','c','т','p','o','k','o','й','.','\0'}

Без символа 0 мы имеем массив символов, а не строку. Для той и другой формы компилятор подсчитывает символы и таким образом получает размер памяти. Как и для других массивов, имя m1 является указателем на первый элемент массива:

m1==&m1[0], *m1=='T', и *(m1+1)==m1[1]=='o'

и т.д.

Действительно, мы можем использовать указатель для создания строки. Например:

char *m3="Символьная строка.";

Это почти то же самое, что и

static char m3[ ]="Символьная строка.";

Оба описания говорят об одном: m3 является указателем строки со словами "Символьная строка". В том и другом случае сама строка определяет размер памяти, необходимой для ее размещения. Однако вид их не идентичен.

Функции ввода-вывода строк

 

Функция Прототип функции Операция
  fgets char *fgets (s, n, stream) char *s; int n; FILE *stream; прочитать строку из входного потока, включая символ новой строки
  gets char *gets (s) char *s; прочитать строку из стандартного файла ввода stdin
  fputs int fputs (s, stream) char *s; FILE *stream; записать строку в поток stream
  puts int puts (s) char *s; записать строку в стандартный файл вывода stdout. В конце строк записывается символ новой строки.

Функции для обработки строк

Для выполнения описанных в этом подразделе функций необходимо подключить файл string.h командой #include <string.h>.

 

Функция Прототип функции Операция
1. strcat char *strcat(s1,s2) char *s1, *s2; сцепить две строки
2. strncat char *strncat(s1,s2,n) char *s1, *s2; int n; сцепить две строки, причем из второй строки копировать не более n символов
3. strcmp int strcmp(s1,s2) char *s1, *s2; сравнить две строки в лексикографическом порядке
4. strncmp int strncmp(s1,s2, n) char *s1, *s2; int n; сравнить первые n символов двух строк
5. strcpy char *strcpy(s1,s2) char *s1, *s2; копировать строку s2 в строку s1
6. strncpy char *strncpy(s1,s2,n) char *s1, *s2; int n; копировать не более n символов строки s2
7. strlen int strlen(s) char *s; определить длину строки (число символов без завершающего нулевого символа)
8. strchr char *strchr(s,n) char *s; int n; найти в строке первое вхождение символа с
9. strrchr char *strrchr(s,c) char *s; int c; найти в строке последнее вхождение символа с
10. strpbrk char *strpbrk(s1,s2) char *s1, *s2; найти в строке s1 любой из множества символов, входящих в строку s2
11. strspn int strspn(s1,s2) char *s1, *s2; определить длину отрезка строки s1, содержащего символы из множества, входящих в строку s2
12. strcspn int strcspn(s1,s2) char *s1, *s2; определить длину отрезка строки s1, не содержащего символы cтроки s2
13. strtok char *strtok(s1,s2) char *s1, *s2;   выделить из строки s1 лексемы, разделенные любым из множества символов, входящих в строку s2

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: