Студопедия — M:String;
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

M:String;






 

Строки

Строка – последовательность символов, заканчивающаяся символом ‘\0’.

Всякий раз, когда компилятор встречается с чем-то, заключенным в двойные кавычки, он определяет это как строковую константу. Символы, заключенные в кавычки, плюс завершающий символ ‘\0’, записываются в последовательные ячейки памяти.

Если нужно включить в строку символов символ двойной кавычки, ей должен предшествовать символ обратной косой черты.

Например:

char* s = “Symbol\””;

Инициализация строк

char s1[] = “Hello”;

char s2[] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’};

char *s3 = “Hello”;

char s4[100 ] = “Hello”;

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

atof double atof(char *str); Преобразует строку str в вещественное число двойной точности
atoi int atoi(char * str); Преобразует строку str в десятичное целое
atol long atoll(char *str); Преобразует строку str в длинное десятичное целое
itoa char *itoa(int v, char* str, int baz) Преобразует целое v в строку str (2 <=baz<=36). Для отрицательного числа baz=10
ltoa char ltoa(long v, char* str, int baz); Преобразует длинное целое v в строку str
strcat char *strcat(char *sp, char* si); Приписывает строку si к строке sp
strchr char *strchr(char *str, char c); Находит в строке str первое вхождение символа c.
strcmp int strcmp(char *str1, char*str2); Сравнивает строки str1 и str2. Результат отрицателен, если str1<str2, равен нулю, если str1=str2, и положителен, если str1 > str2
strcpy char *strcpy(char* sp, char* si); Копирует строку si в строку sp
strcspn int strcspn(char *str1, char* str2); Определяет длину первого сегмента строки str1, содержащего символы, не входящие во множество символов str2
strlen unsigned strlen(char *str); Вычисляет длину строки str
strlwr char *strlwr(char *str); Преобразует буквы верхнего регистра в строке в буквы нижнего регистра
stnucat char *strncat(char *sp, char* si, int kol); Приписывает kol символов строки si к строке sp
strncmp int strncmp(char *str1, char* str2, int kol); Сравнивает строки str1 и str2, причем рассматриваются только первые kol символов. Результат отрицателен, если str1<str2, равен нулю, если str1=str2, и положителен, если str1 > str2
strncpy char *strncpy(char *sp, char *si, int kol); Копирует kol символов строки si в строку sp
strpbrk char *strpbrk(char * str1, char* str2); Находит в строке str1 первое появление любого из множества символов, входящих в строку str2
strrchr char *strrchr(char* str, char c); Находит в строке str последнее вхождение символа c
strspn int strspn(char *str1, char *str2); Определяет длину первого сегмента строки str1, содержащего символы из множества символов, входящих в строку str2
strupr char *strupr(char *str); Преобразует буквы нижнего регистра в строке str в буквы верхнего регистра
ultoa int *ultoa(unsigned long v, char *str, int baz); Преобразует беззнаковое длинное целое v в строку str

Функции находятся в библиотеках <stdlib.h> и <string.h>

 

Функции для выделения и освобождения памяти

calloc void *calloc(size_t, size_t); Возвращает указатель на начало области оперативной памяти для размещения n элементов по m байт каждый. При неудачном завершении возвращает NULL.
free void free(void *bl); Освобождает ранее выделенный блок оперативной памяти с адресом первого байта bl
malloc void *malloc(size_t s); Возвращает указатель на блок памяти длиной s байт. При неудачном завершении возвращается значение NULL
realloc void * realloc(void *bl, size_t ns); Изменяет размер ранее выделенной памяти с адресом начала bl на ns байт

Функция calloc аналогична функции malloc, но дополнительно инициализирует выделенную память байтом '\0' (0, NULL).

Функции, перечисленные в таблице, определены в библиотеке <stdlib.h>

Обработка строковой информации

Прежде всего нам нужны переменные для хранения этой информации. Можно воспользоваться простым типом данных Char ("символ") и составным типом String ("строка"). Переменная типа Char в качестве своего значения может иметь один символ. Например, если имеется описание:

 

Var

C:Char;

то возможны следующие присваивания: C:='a'; C:='1'; C:='?'.

Понятно, что для работы с большими объемами символьной информации этот тип не применим. Поэтому, на практике чаще всего используют тип String. В качестве своего значения переменная этого типа может содержать любую последовательность символов длиной от 0 до 255.

В общем виде переменная строкового типа описывается так:


Рис.1. Общий вид описания строковой переменной

Например, описание:

 

Var

Line:String[20];

говорит о том, что значением переменной Line может быть любая последовательность символов длиной от 0 до 20.

 

Замечания.
1. Максимальное число, которое может находиться в квадратных скобках, равно 255. Таким образом, максимальная длина строки 255 символов.
2. При описании переменной строкового типа можно не указывать число в квадратных скобках:

Var

M:String;

Такая запись эквивалентна следующей:

Var

M:String[255];

Доступ к символам строки осуществляется также, как к элементам одномерного массива: указанием имени строковой переменной и в квадратных скобках номера символа в строке. Например, Line[5]. Номер элемента может задаваться выражением, для которого справедливы все требования, налагаемые на индекс элемента массива. Таким образом, строки очень похожи на одномерные массивы, однако, в отличие от массивов, строки допускают присваивание вида: Line:='ель';. При использовании конструкции вида: ReadLn(Line); можно задать значение всей строке.

 

 







Дата добавления: 2015-08-30; просмотров: 307. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

Уравнение волны. Уравнение плоской гармонической волны. Волновое уравнение. Уравнение сферической волны Уравнением упругой волны называют функцию , которая определяет смещение любой частицы среды с координатами относительно своего положения равновесия в произвольный момент времени t...

Медицинская документация родильного дома Учетные формы родильного дома № 111/у Индивидуальная карта беременной и родильницы № 113/у Обменная карта родильного дома...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия