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

Тема 9. Символы и строки в Си

Читайте также:
  1. Воинские символы и ритуалы
  2. Гастрокинетики
  3. Государственные символы РФ.
  4. Индивидуальные задания на строки
  5. Команды основной строки меню команд
  6. Конституция Республики Казахстан. Государственные символы Республики Казахстан.
  7. Лекция №4 Символьные строки и форматированный ввод-вывод
  8. Массивы как члены классов. Массивы объектов. Строки как члены классов. Массивы строк.
  9. Матрица, состоящая из одной строки или одного столбца, называется соответственно вектор-строкой или вектор-столбцом. Вектор-столбцы и вектор-строки называют просто векторами.
  10. О том как политические бренды и символы превращаются в торговые марки.
  11. Основные символы Паскаль
  12. Поставщик 1030 – в строки 1,7,10,12

Объявление строки символов. Имеется несколько способов определения строк. К основным способам относятся использование строковых констант, массивов типа 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 – Функции библиотеки обработки символов

Прототип Описание функции
int isdijit (int c) Возвращает значение true, если с является цифрой, и 0 (false) в других случаях.
int isalpha (int c) Возвращает значение true, если с является буквой, и 0 в других случаях.
int isalnum (int c) Возвращает значение true, если с является цифрой или буквой, и 0 в других случаях.
int isxdijit (int c) Возвращает значение true, если с является одним из символов шестнадцатеричного формата, и 0 в других случаях.
int islower (int c) Возвращает значение true, если с является буквой нижнего регистра, и 0 в других случаях.
int isupper (int c) Возвращает значение true, если с является буквой верхнего регистра, и 0 в других случаях.
int tolower (int c) Если с является буквой верхнего регистра, то tolower возвращает с как букву нижнего регистра. В других случаях tolower возвращает аргумент без изменений.
int toupper (int c) Если с является буквой нижнего регистра, то toupper возвращает с как букву верхнего регистра. В других случаях toupper возвращает аргумент без изменений.
int isspace (int c) Возвращает значение true, если с является пробельным символом – пробел (' '), новая страница (‘\f’), новая строка (‘\n’), возврат каретки (‘\r’), горизонтальная табуляция (‘\t’) или вертикальная табуляция (‘\v’) – и 0 в других случаях.
int iscntrl (int c) Возвращает значение true, если с является управляющим символом, и 0 в других случаях.
int ispunct (int c) Возвращает значение true, если с является отображаемым при печати символом, но не относится к пробельным символам, цифрам или буквам, и 0 в других случаях.
int isprint (int c) Возвращает значение true, если с является отображаемым при печати символом, включая символ пробела (' '), и 0 в других случаях.
int isgraph (int c) Возвращает значение true, если с является отображаемым при печати символом, исключая символ пробела (' '), и 0 в других случаях.

Функции преобразования строк. Для работы с функциями преобразования строк необходимо подключить заголовочный файл <stdlib.h>. Эти функции преобразуют строки цифр в целые значения и значения с плавающей точкой. В таблице 9 приведен перечень функций преобразования строк.

Таблица 9 – Функции преобразования строк

Прототип Описание функции
double atof (const char *nPtr) Преобразует строку nPtr в тип double.
int atoi (const char *nPtr) Преобразует строку nPtr в тип int.
long atol (const char *nPtr) Преобразует строку nPtr в тип long int.
double strtod (const char *nPtr, char **endPtr) Преобразует строку nPtr в тип double.
long strtol (const char *nPtr, char **endPtr, int base) Преобразует строку nPtr в тип long.
unsigned long strtoul (const char *nPtr, char **endPtr, int base) Преобразует строку nPtr в тип unsigned long.

Функции стандартной библиотеки ввода/вывода. Стандартная библиотека ввода/вывода <stdio.h> также содержит несколько функций, которые предназначены для работы с символьными и строковыми данными. В таблице 10 приведен перечень функций ввода/вывода символов и строк из стандартной библиотеки ввода/вывода.

Таблица 10 – Символьные и строковые функции стандартной библиотеки ввода/вывода

Прототип Описание функции
int getchar (void) Вводит следующий символ со стандартного устройства ввода и возвращает его в формате целого.
char *gets (char *s) Вводит символы со стандартного устройства ввода в массив s до тех пор, пока не встретит символ новой строки или индикатор конца файла. После этого к массиву добавляется ограничивающий символ NULL.
int putchar (int c) Печать символа, хранящегося в с.
int puts (const char *s) Печать строки s с последующим символом новая строка.
int sprintf (char *s, const char *format, …) Эквивалент функции printf за исключением того, что результат вывода запоминается в массиве s, а не отображается на экране.
int sscanf (char *s, const char *format, …) Эквивалент функции scanf за исключением того, что ввод осуществляется из массива s, а не с клавиатуры.

Основная литература: 1осн[325-355], 2осн[371-405]

Дополнительная литература: 5доп[46-51],6доп[116-126], 8доп[13-16]

Контрольные вопросы:

1. Назовите различные способы определения строки?

2. Какие функции содержит стандартная библиотека ввода/вывода <stdio.h>?

3. Какой заголовочный файл необходимо подключить для работы с библиотекой преобразования строк?

4. Какой заголовочный файл необходимо подключить для работы с библиотекой обработки символов?

5. Какие функции используются для изменения регистров символа?

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)