ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Методические указания к лабораторной работе 1 Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем ПРОГРАММИРОВАНИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Разбиение строки на поля (strtok) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 2 Первой базовой подпрограммой, на основе которой должно строиться решение задачи, предложенной в лабораторной работе, является разбиение строки на поля, разделенные заданным символом.
Разбиение строки на поля (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 3 Пример1: Строка: "/home/alex/video/prog/C.avi" Разделитель: '/' Результат: char result[100][256]; result =={"home", "alex", "video", "prog","C.avi"} Задачи: Определить глубину вложенности, количество символов в имени файла, максимальная длина имени директории, преобразование символов имени файла к нужному регистру, определение номера раздела.
Разбиение строки на поля (3) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 4 Пример2: Строка: "/home/alex/+/home/ivan/test.cpp+/usr/bin/mc" Разделитель: '+' Результат: {"/home/alex/","/home/ivan/test.cpp","/usr/bin/mc"} Второй уровень сложности
Разбиение строки на поля (4) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 5 Пример3: Строки: "csc.sibsutis.ru", " " Разделитель: '.' Результаты: 1. char r[100][256] = {"csc","sibsutis","ru"}, 2. char r[100][256] = {"192","168","1","1"} используя функцию my_atoi можно перевести элементы IP адреса в числовое представление. {"192","168","1","1"} –> int ir[100] = {192,168,1,1} Задачи: проверка имен узлов и IP адресов.
Дополнительное чтение © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 6 Семестр I Лекция "Представление текстовой информации" Определение длины строки (слайд 19) Копирование строки (слайды 20-21) Сравнение строк (слайды 25-26) Поиск символа в строке (слайд 27) Конкатенация строк (слайд 28) Получение подстроки по индексам (слайды 30-32) Поиск подстроки в строке (слайды 36-37) Хранение многострочного текста (слайды 39 – 57) Конкатенация строк набора (слайд 48)
Поиск символа в строке (strchr) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 7 Второй базовой подпрограммой, на основе которой должно строиться решение задачи, предложенной в лабораторной работе, является поиск заданного символя в заданной строке
Поиск подстроки в строке (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 8 Пример1 Строка: char str[] = "D:\video\prog\C.avi" Символ: ":" Результат: 1 Таким образом имя диска находится в 0-м элементе строки, однородный путь (\video\prog\C.avi) расположен начиная со 2-го символа. Для удаления префикса ("D:") и работы только с однородным путем можно использовать следующий прием: D:\video\prog\C.avi\0do/...e D:\video\prog\C.avi\0do/...e str (str+2)
Поиск подстроки в строке (3) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 9 Пример2 Строка: str[] = Символы: ":" Результаты: 4, str (str+5) vi alex\ ~/do/...e vi (str+17) : (str+5)[0] == '1' (str+5)[1] == '9' (str+5)[2] == '2' (str+17)[0] == '~'
Поиск подстроки в строке (strstr) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 10 Третьей базовой подпрограммой, на основе которой должно строиться решение задачи, предложенной в лабораторной работе, является поиск заданной подстроки в заданной строке
Поиск подстроки в строке (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 11 Пример1: Строка: " Подстрока: "://" Результат: 4 Таким образом название протокола находится в элементах строки 0 – 3. Далее возможно использование функции сравнения строк: http\0// /vido/...e : scrcmp(str,"http") == 0 strcmp(str,"ftp") > 0
Изменение строки © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 12 При замене одного фрагмента (подстроки) в строке на новый необходимо учитывать следующие факторы: Если длина нового фрагмента больше длины исходного необходим сдвиг элементов вправо Иначе – необходим сдвиг влево
Изменение строки (2) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 13 /somedir\ /home/alex... /home/alex\ ~/somedir\ /somedir
Изменение строки (3) © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» 14 //host.ru /video\ ftp: //host.ru /video\ \\host.ru \video\