Студопедия

КАТЕГОРИИ:


Архитектура-(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.
int strcmp (строка 1, строка 2)

Возвращаемое значение равно:

- < 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 (строка)
unsigned strlen (char *);

Возвращает число символов в строке без конечного нуля.


Первое вхождение строки 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; Просмотров: 379; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.038 сек.