КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Exit function
Basic Операторы и функции Basic Переменные Литералы Работа со строками Здесь будут рассмотрены средства манипулирования со строковыми данными как в языке C, так и в языке Basic. Эти средства группируются по функциональному признаку с тем, чтобы получить представление об общих чертах и отличиях в их реализации на каждом языке. Наряду с новыми средствами будут приведены и описанные ранее. Цель такого изложения материала заключается в том, чтобы свести в одном разделе практически все аспекты обработки символьных данных. Правило записи строковых литералов в языках C и Basic одинаково: строковый литерал:= "<текст>" Пример. "Это строковый литерал" В языке Basic литерал типа string относится к виду строк переменной длины и занимает в памяти (10 + длина строки) байтов. В языке C любой строковый литерал есть массив символов, заканчивающийся символом '\0', который добавляет транслятор, т.е. его длина в памяти на 1 символ (байт) больше числа символов между кавычками. Пример. "Это строка!" (11 знаков) à в памяти будет: Это строка!\0 (12 знаков) Тип данных string. 2 вида: строки переменной и фиксированной длины. Объявление: <имя> as string [*<длина>]
C Типа данных string нет. Вместо строковых переменных используются массивы типа char. Следовательно, они аналогичны строкам фиксированной длины языка Basic. Объявление: char <имя>[<длина>] C Ввод - вывод Ввод строки в окно – InputBox (поясняющий текст[, заголовок окна] [,значение по умолчанию][,xнач] [, yнач]). Возвращаемое значение: строка, введенная с клавиатуры в поле ввода. Аргументы: - если заголовок окна опущен, то в окно помещается имя приложения; - значение по умолчанию – значение, появляющееся в поле ввода; если пользователь согласен с этим значением, то, не вводя значение с клавиатуры, нужно щелкнуть по кнопке ОК; - xнач, yнач – координаты левого верхнего угла окна; если xнач опущено, то окно центрируется по горизонтали; если yнач опущено, то окно располагается примерно на уровне 1/3 от верха экрана. Файл прототипов stdio.h. Ввод с клавиатуры: - функция scanf (спецификация % s ); - функция gets ( char* ). Введенное значение заносится в символьный массив. Обе функции добавляют конечный символ '\0'. Можно заполнять символьный массив с клавиатуры в цикле с помощью функции getchar (char). В этом случае, конечный нуль не добавляется. Пример. Поэлементное присваивание. char str1[20], str2[20]; ................................... gets(str1); for (i=0; str2[ I ]=str1[ I ]; i++); Пример. InputBox("Число людей в кругу:") Заголовок окна: Flavii. Вывод строки в окно – MsgBox (сообщение[, кнопки][, заголовок]). Возвращаемое значение: код нажатой кнопки. Используется для организации диалога. Изучить самостоятельно. Аргументы: - кнопки – целое выражение, кодирующее число и названия выводимых в окно кнопок; если опущено, выводится одна кнопка ОК; - заголовок – см.функцию InputBox. Пример. MsgBox("Остался жив №" & nomer) - функция printf (спецификация % s ); - функция puts ( char* ). Также в цикле можно выводить строки с помощью функции putchar (char).
Конкатенация (сцепление)
Оператор & Файл прототипов для после-дующих функций string.h. char* strcat (левая строка, правая строка) Копирование (присваивание) Оператор = char* strcpy (копия, оригинал)
Сравнение Оператор = Пример. dim str1 as string, str2 as string str1="Привет ": str2 ="семье!" str1 & str2 à "Привет семье!" if str1 = str2 then ' Результатà false Есть 3 режима сравнения строк, которые задаются инструкцией вида: option compare <режим> Режимы: - binary – с учетом регистра (по умолчанию); - text – без учета регистра; - database – для MS Access. Возвращаемое значение равно: - < 0, если строка 1 < строки 2; - ==0, если строка 1 == строке 2; - > 0, если строка 1 > строки 2. Пример. char str1[20], str[20]; strcpy(str1, "Привет "); strcpy(str2, "семье!"); strcat(str1, str2); à "Привет семье!" if (strcmp(str1, str2)) àstr1!= str2 Длина строки
Len (строка) Возвращает число символов в строке без конечного нуля. Первое вхождение строки s2 в s1
InStr ([начальная позиция,] где ищем, что ищем[, режим сравнения]) Возвращаемое значение: позиция, с которой строка что ищем входит в строку где ищем; если вхождения нет, возвращается 0. Аргументы: - начальная позиция – позиция, с которой начинается поиск; если опущена, то поиск с первой позиции; - режим сравнения:= { binary | text | database }; если опущен, то определя-ется инструкцией option compare; если задан, то начальная позиция обязательна. Пример. s1="0123456789": s2="345" k=InStr(5, s1, s2) ' k=0 char* strstr (где ищем, что ищем); Возвращаемое значение: указатель на символ, с которого начинается вхождение s2 в s1; если вхождения нет, возвращается NULL. Пример. strcpy(s1, "0123456789"); strcpy(s2, "345"); p=strstr(s1, s2);
Формирование строки из повторяющихся символов Строка из пробелов: space (число пробелов) Строка из произвольных повторяющихся символов: string (число, строка) Строка строится из первого символа строки. char* strset (строка, символ) Другие возможности Выделение подстрок: - left (строка, n) – n первых символов строки; - right (строка, n) – n последних символов строки; - mid (строка, начало[, n]) – n символов строки с позиции начало. - trim (строка) – удалить пробелы с двух концов строки. Выравнивание: Инструкция lset строка1 = строка2 Присваивает строке1 значение строки2 и, если длина строки1 бол ьше длины строки2, лишние "правые" символы заменяются пробелами. Инструкция rset строка1 = строка2 Делает то же самое, но "прижимает" строку2 к "правой" границы строки1. Инициализация символьного массива. char mes[ ]="Это строка!"; Длину массива можно не указывать, транслятор сам определит ее по числу символов инициализирующей строки. Пример. Определить, являются ли 2 строки анаграммой. function anagr(str1 as string, str2 as _ string) as boolean dim len1 as integer, _ len2 as integer, _ i as integer, _ j as integer, _ fl1 as boolean, _ fl2 as boolean, _ sled() as boolean len1=len(str1): len2=len(str2) if len1<>len2 then anagr= false
Дата добавления: 2014-12-27; Просмотров: 422; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |