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

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

График выполнения и сдачи заданий по дисциплине | Типы данных в языке Си. | Использование функции printf( ) и scanf( ). | Операторы языка Си | Тема 3. Управляющие структуры. Структуры повторения While, do – While, For. Управляющие операторы break и continue. | Тема 4. Массивы. Разработка программ с использованием одномерных и двумерных массивов. | Тема 6. Классы памяти и разработка программ. | Тема 7. Указатели в Си. | Тема 12. Динамические структуры данных. | Тема 13. Работа с файлами в Си. |


Читайте также:
  1. Высота строки
  2. Знаки и символы.
  3. Маркировочные символы на упаковке
  4. Он утверждал символы ислама стал неверным по той причине, что объявил себя пророком.
  5. Создание бегущей строки
  6. Тео зажег две свечи и замер рядом, позволяя Розе пробежать глазами желанные строки. Она растерянно на него взглянула, передавая свиток. Где-то внутри словно натянулась струна.

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

Таблица 2 – Функции библиотеки обработки символов

Прототип Описание функции
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>. Эти функции преобразуют строки цифр в целые значения и значения с плавающей точкой. В таблице 3 приведен перечень функций преобразования строк.

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

Прототип Описание функции
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> также содержит несколько функций, которые предназначены для работы с символьными и строковыми данными. В таблице 4 приведен перечень функций ввода/вывода символов и строк из стандартной библиотеки ввода/вывода.

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

Прототип Описание функции
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]

Дополнительная литература: 10доп[46-51], 11доп[13-16]

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

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

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

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

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

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

 


Дата добавления: 2015-11-04; просмотров: 140 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Тема 8. Использование указателей при обработке одномерных и двумерных массивов.| Тема 11. Структуры данных в Си.

mybiblioteka.su - 2015-2024 год. (0.015 сек.)