|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Тема 9. Символы и строки в СиОбъявление строки символов. Имеется несколько способов определения строк. К основным способам относятся использование строковых констант, массивов типа char и массивов, состоящих из символьных строк. Строковая константа заключается в двойные кавычки. Символы, заключенные в кавычки, и завершающий символ ‘\0’ записываются в последовательные ячейки памяти. Компилятор подсчитывает количество символов для определения размера памяти при запоминании (размещении) строки. Строковые константы можно определять при помощи директивы #define. Если в строке нужно использовать символ двойной кавычки, то перед этим символом записывается символ обратной дробной черты. Например: printf (“\” Сведения о сессии”\n”); Строковая константа является указателем на место в памяти, где записана строка. При определении массива символьных строк необходимо сообщать компилятору требуемый размер памяти, для установления требуемого размера памяти массив можно инициализировать при помощи строковой константы.(используются статические и внешние массивы) char c[ ]=”Определение максимального балла”; (внешний массив) Как и в случае обычных массивов имя c является указателем на первый элемент массива: c==&c[0]; *c==’0’, и *(c+1)==c[1]==’n’; Используем указатель для создания строки. Например: char *c1=”\n ввод баллов”; Это почти то же самое, что и static char c1[ ]=”\n ввод баллов”; Оба описания говорят об одном: с1 является указателем строки. Можно явно задать размер памяти. Во внешнем описании можно записать: char c[35]=”определение максимального балла”; вместо char c[ ]=”определение максимального балла”; Число элементов на один символ больше, чем длина строки (включая нуль-символ). Как и в других статических или внешних массивах, любые использованные элементы автоматически инициализируются нулем (который в символьном виде является нуль-символом, а не символом цифры нуль). Массивы символьных строк. Рассмотрим массив символьных строк, каждая строка массива представляет собой символьный массив. Приведем описание статического массива в следующем виде: static char *m[4]={“регистр”,”ячейка”,”указатель”,”элемент”}; Массив *m[4]является массивом, состоящим из 4 указателей на символьные строки. Итак, т.к. символьные строки являются массивами, то имеется в рассмотрении 4 указателя на эти массивы. Первым указателем является m[0], он ссылается на первую строку. Второй указатель m[1] ссылается на вторую строку. При этом каждый указатель, в частности, ссылается на первый символ своей строки: *m[0]==’р’; *m[1]==’я’; *m[2]==’у’; *m[3]==’э’; инициализация выполняется по правилам, определенным для массивов. Тексты в кавычках эквивалентны скобочной записи: {{…},{…},…,{…}}; Описывая размеры строк можно задавать размер строк символов, причем длины строк в данном описании будут одинаковыми: static char m[4][10]; неиспользованные (лишние) элементы строки статического (внешнего) массива инициализируются символом “\0” (нуль-символом). Для того, чтобы не было лишних элементов (т.е. экономнее тратится память) можно использовать следующее описание: static char *[4]; Здесь длина каждой строки определяется конкретной строкой, которая инициализирует соответствующую строку массива. Библиотека обработки символов. Библиотека обработки символов включает в себя несколько функций, выполняющих ряд полезных проверок и операций с символьными данными. Каждая функция получает в качестве аргумента символ – представляемый типом int – или индикатор EOF (конец файла). Для работы с функциями библиотеки обработки символов надо подключить заголовочный файл <ctype.h>. В таблице 8 приведен перечень функций библиотеки обработки символов. Таблица 8 – Функции библиотеки обработки символов
Функции преобразования строк. Для работы с функциями преобразования строк необходимо подключить заголовочный файл <stdlib.h>. Эти функции преобразуют строки цифр в целые значения и значения с плавающей точкой. В таблице 9 приведен перечень функций преобразования строк. Таблица 9 – Функции преобразования строк
Функции стандартной библиотеки ввода/вывода. Стандартная библиотека ввода/вывода <stdio.h> также содержит несколько функций, которые предназначены для работы с символьными и строковыми данными. В таблице 10 приведен перечень функций ввода/вывода символов и строк из стандартной библиотеки ввода/вывода. Таблица 10 – Символьные и строковые функции стандартной библиотеки ввода/вывода
Основная литература: 1осн[325-355], 2осн[371-405] Дополнительная литература: 5доп[46-51],6доп[116-126], 8доп[13-16] Контрольные вопросы: 1. Назовите различные способы определения строки? 2. Какие функции содержит стандартная библиотека ввода/вывода <stdio.h>? 3. Какой заголовочный файл необходимо подключить для работы с библиотекой преобразования строк? 4. Какой заголовочный файл необходимо подключить для работы с библиотекой обработки символов? 5. Какие функции используются для изменения регистров символа?
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |