Скачать презентацию Лекция 10 Строки Визуальное програмирование Ст преп М Скачать презентацию Лекция 10 Строки Визуальное програмирование Ст преп М

ВП_Лекция 10_C_Строки.ppt

  • Количество слайдов: 20

Лекция 10. Строки. Визуальное програмирование. Ст. преп. М. А. Сокольская Лекция 10. Строки. Визуальное програмирование. Ст. преп. М. А. Сокольская

План. 1. 2. 3. 2 4. Строки. Функции работы со строками. a) Определение длины План. 1. 2. 3. 2 4. Строки. Функции работы со строками. a) Определение длины строки b) Копирование фрагмента строки c) Объединение строк d) Сравнение строк e) Поиск символа в строке f) Поиск подстроки в строке Двумерные массивы строк. Безразмерные массивы

Строки в языке С - это массивы символов. Завершающ иеся нулевым байтом ‘�’. 3 Строки в языке С - это массивы символов. Завершающ иеся нулевым байтом ‘’. 3 Строки Класс string, предусмотренный в С++

С-строки По соглашению, последним знаком строки должен быть нулевой знак �, поэтому при объявлении С-строки По соглашению, последним знаком строки должен быть нулевой знак , поэтому при объявлении строки как массива символов следует предусматривать эту ячейку. Например: char str 1[50]; //49 символов и завершающий нулевой байт char *str 1; //объявление строки через указатель str 1=new char [50]; //49 символов и завершающий нулевой байт 4

С-строки Синтаксис объявления строк: char имя_строки [кол-во_символов + нулевой байт] или char * имя_строки; С-строки Синтаксис объявления строк: char имя_строки [кол-во_символов + нулевой байт] или char * имя_строки; имя_строки = new char [кол-во_символов + нулевой байт]; 5

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

Определение длины строки size_t strlen(const char* string); Определить длину строки в байтах, не считая Определение длины строки size_t strlen(const char* string); Определить длину строки в байтах, не считая завершающего нулевого байта. 7

Копирование фрагмента строки char* strcpy(char* target, const char* source); Копировать строку source по адресу Копирование фрагмента строки char* strcpy(char* target, const char* source); Копировать строку source по адресу target, включая завершающий нулевой байт. Функция предполагает, что памяти, выделенной по адресу target, достаточно для копируемой строки. В качестве результата функция возвращает адрес первой строки, т. е. адрес target. 8

Объединение строк char* strcat(char* target, const char* source); 9 Присоединить строку source с конца Объединение строк char* strcat(char* target, const char* source); 9 Присоединить строку source с конца строки target, включая завершающий нулевой байт. На место завершающего нулевого байта первой строки переписывается первый символ второй строки. В результате по адресу target получается строка, образованная слиянием первой строки со второй. В качестве результата функция возвращает адрес первой строки, т. е. адрес target.

Сравнение строк int strcmp(const char* string 1, const char* string 2); Сравнить две строки Сравнение строк int strcmp(const char* string 1, const char* string 2); Сравнить две строки в лексикографическом порядке (по алфавиту). Условие Результат string 1 < string 2 string 1 > string 2 Положительное число string 1 = string 2 10 Отрицательное число Ноль

Поиск символа в строке char *strchr (const char *str, int ch); 11 Возвращает указатель Поиск символа в строке char *strchr (const char *str, int ch); 11 Возвращает указатель на первое вхождение младшего байта числа ch в строку str. Если вхождение не обнаружено, то возвращается нулевой указатель. Младший байт числа трактуется как код символа, т. е. можно указать символьное значение

Поиск подстроки в строке char *strstr (const char *str 1, const char *str 2); Поиск подстроки в строке char *strstr (const char *str 1, const char *str 2); Функция возвращает указатель на первое вхождение символа из строки str 1, совпадающее с каким-либо символом из строки str 2. Если вхождение не обнаружено, то возвращается нулевой указатель. 12

Пример #include <stdio. h> #include <string. h> int main () { char s 1[80], Пример #include #include int main () { char s 1[80], s 2[80]; gets(s 1); gets(s 2); printf(“Длина строк: %d %dn”, strlen(s 1), strlen(s 2)); if (!strcmp (s 1, s 2)) printf (“Строки одинаковыn”); 13

14 strcat (s 1, s 2); printf (“%sn”, s 1); strcpy (s 1, “Проверкаn”); 14 strcat (s 1, s 2); printf (“%sn”, s 1); strcpy (s 1, “Проверкаn”); printf (s 1); if (strchr (“Привет”, ‘е’)) printf (“В слове ”Привет” есть буква ”е”n”); if (strstr (“Привет”, ‘ив’)) printf (“В слове ”Привет” есть сочетание букв ”ив”n”); return 0; }

Массивы строк Это двумерные массивы символов. Задаётся: количество строки и количество символов в каждой Массивы строк Это двумерные массивы символов. Задаётся: количество строки и количество символов в каждой строке (с учетом нулевого байта) Например: char str 1[10][30]; //массив из 10 строк по 30 //символов в каждой строке 15

Для доступа к отдельной строке достаточно указать её индекс. Например: gets ( str 1[2]); Для доступа к отдельной строке достаточно указать её индекс. Например: gets ( str 1[2]); //прочитать с клавиатуры вторую строку массива 16

Пример. Чтение строк и посимвольный вывод текста. #define max 100 #define len 10 char Пример. Чтение строк и посимвольный вывод текста. #define max 100 #define len 10 char text [max][len]; int main () { int t, i, j; cout<<“Для выхода введите пустую строку”; for (t=0; t

cout<<t<<“: ”; gets(text[t]); if (!*text[t]) break; //выход, если строка пуста 18 } for (i=0; cout<

Инициализация безразмерной строки Возможна, если содержимое строки известно заранее. Избавляет программиста от подсчета количества Инициализация безразмерной строки Возможна, если содержимое строки известно заранее. Избавляет программиста от подсчета количества символов. Например: char str 2 [ ] = “Не могу открыть файл n”; Компилятор самостоятельно считает количество символов с учетом нулевого байта. Безразмерные массивы можно изменять, не заботясь о размере. 19

Для многомерных массивов, строковых в том числе нужно указать все размеры, кроме первого. Например: Для многомерных массивов, строковых в том числе нужно указать все размеры, кроме первого. Например: char str 3 [ ] [2]={“Федя”, ”Юля”}; 20