Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Краткие теоретические сведения. Для представления символьной (текстовой) информации можно использовать символы, символьные переменные и символьные константы




Для представления символьной (текстовой) информации можно использовать символы, символьные переменные и символьные константы.

Символьная константа представляется последовательностью символов, заключенной в кавычки: “Начало строки \n”. В C/C++ нет отдельного типа для строк. Массив символов - это и есть строка. Количества элементов в таком массиве на один элемент больше, чем изображение строки, т. к. в конец строки добавлен ‘\0’ (нулевой байт или нуль-терминатор).

Работа со строками

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

char s[] = “ABCDEF”;

Функция scanf() может использоваться для чтения строк из потока ввода, для чего надо указать спецификатор формата %s ‑ который заставляет функцию scanf() читать символы, пока не встретится специальный символ. Прочитанные символы помещаются в массив символов, на который указывает соответствующий аргумент, и результат завершается нулевым символом. Применительно к scanf() специальные символы ‑ это пробел, новая строка, табуляция, вертикальная табуляция или перевод формата. Функция scanf() читает строку до первого специального символа. Это означает, что нельзя использовать scanf() для чтения строки типа «this is a test», поскольку первый пробел завершит процесс ввода. Поэтому рекомендуется использовать специальные функции для чтения строк из консоли ‑ gets(), которая читает строку, пока не встретится возврат каретки.

Функция gets() читает строку символов, введенных с клавиатуры и помещает их по адресу, указанному в аргументе. Можно набирать символы, пока не будет нажат ввод. Символ, соответствующий клавише ввод - возврат каретки, - не станет частью строки. Вместо этого в конце строки появится нулевой символ, и gets() закончит работу. Функция gets() возвращает указатель на str. Прмер использования команды gets(0):

char str[80];

gets(str);

Для вывода строки на консоль можно использовать функции printf() и puts. Для использования функции printf необходимо указывать спецификатор формата %s. Функция puts() выводит передаваемый ей аргумент на экран, завершая вывод переходом на новую строку. Примеры использования этих функций:

printf ("Here's your string: %s", str);

puts(str);

Для работы со строками существует специальная библиотека string.h. Примеры функций для работы со строками из библиотеки string.h:

Функция Прототип и краткое описание функции
strcmp int strcmp(const char *str1, const char *str2); Сравнивает строки str1 и str2. Если str1< str2, то результат отрицательный, если str1 = str2, то результат равен 0, если str1> str2, то результат положительный.
strcpy char* strcpy(char*s1, const char *s2); Копирует байты из строки s1 в строку s2
strdup char *strdup (const char *str); Выделяет память и перености в нее копию строки str.
strlen unsigned strlen (const char *str); Вычисляет длину строки str.
strncat char *strncat(char *s1, const char *s2, int kol); Приписывает kol символов строки s1 к строке s2.
strncpy char *strncpy(char *s1, const char *s2, int kol); Копирует kol символов строки s1 в строку s2.
strnset char *strnset(char *str, int c, int kol); Заменяет первые kol символов строки s1 символом с.

Строки, при передаче в функцию, в качестве фактических параметров могут быть определены либо как одномерные массивы типа char[], либо как указатели типа char*. В отличие от обычных массивов в этом случае нет необходимости явно указывать длину строки.

Потоковый ввод-вывод

На уровне потокового ввода-вывода обмен данными производится побайтно, т. е. за одно обращение к устройству (файлу) производится считывание или запись фиксированной порции данных (512 ил 1024 байта). При вводе с диска или при считывании из файла данные помещаются в буфер ОС, затем побайтно или порциями передаются в программе пользователя. При вывод в файл данные накапливаются в буфере, а при заполнении буфера записываются в виде единого блока на диск. Буферы ОС реализуются в виде участков основной памяти. Функции библиотеки Си, поддерживающие обмен, с данными на уровне потока позволяют обрабатывать данные различных размеров и форматов.

Поток ‑ это файл вместе с предоставленными средствами буферизации. При работе с потоком можно:

· Открывать и закрывать потоки (связывать указатели на поток с конкретными файлами);

· вводит и выводить строку, символ, форматированные данные, порцию данных произвольной длины;

· анализировать ошибки ввода-вывода и достижения конца файла;

· управлять буферизацией потока и размером буфера;

· получать и устанавливать указатель текущей позиции в файле;

Функции библиотеки ввода-вывода находятся в заголовочном файле <stdio.h>.





Поделиться с друзьями:


Дата добавления: 2016-03-28; Мы поможем в написании ваших работ!; просмотров: 458 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Победа - это еще не все, все - это постоянное желание побеждать. © Винс Ломбарди
==> читать все изречения...

2268 - | 2092 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.