Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_пяву_4.doc
Скачиваний:
101
Добавлен:
15.03.2015
Размер:
1.29 Mб
Скачать
    1. Строковый литерал

Строковый литерал – это последовательность символов, заключенная в кавычки. Например: “”Hello.

Какой тип имеет строковый литерал? Строковый литерал “Hello” имеет типchar[6]. В общем случае строковый литера, состоящий из “n” символов имеет типchar[n+ 1]. Наличие слагаемого 1 учитывает необходимость хранить нуль-символ.

Таким образом, символьный литерал – это разновидность символьного массива. Возможна т другая трактовка символьного литерала, в соответствии с которой строковый литерал является указателем. Например, char*p= “Hello”; В этом примере указательpинициализируется адресом строкового литерала.

Часто текст строкового литерала не помещается на одной строке экрана. Возможны два способа продолжения ее на следующей строке. Рассмотрим вначале первый способ. Он состоит в использовании в конце текущей строки символа обратная косая черта. Например

printf(“Эта длинная строка \

введена на нескольких\

строчках, которые заканчиваются \

обратной чертой”);

Отступы на строках продолжения не следует делать, а если они сделаны, то пробелы, их представляющие будут внесены в строку.

Второй способ продолжить строку состоит в следующем: необходимо в конце текущей строки поставить символ “ (т. е.) закрыть строку, а на следующей строке экрана открыть новую строку. Например:

printf(“Начало строки”“продолжение строки”);

    1. Символические строковые константы

Символическая строковая константа – это константа, имеющая имя. Возможны два способа объявления символических констант:

  • использование директивы препроцессора define

  • использование ключевого слова const.

Примеры.

#define MESSAGE “Ошибка ввода” const char message2[] = “Ошибка ввода”ж

    1. Строковые переменные

Строковая переменная – это идентификатор массива, элементы которого имеют тип char. Этот массив должен содержать текст строки, в конце которой должен находиться нуль-символ. Рассмотрим следующий фрагмент программного кода.

#define MLEN 128

char str1[MLEN];

int main(void)

{

char str2[MLEN];

// …

}

Здесь str1 является пустой строкой. Дело в том, чтоstr1 является глобальной переменной, а все глобальные переменные инициализируются нулями. С другой стороны str2 – локальная переменная. Такая переменная содержит “мусор”, среди которого может нуль-символ отсутствовать.

    1. Инициализация строковых переменных

Возможны два способа инициализации строковой переменной:

  • строковым литералом.

  • символьным массивом

Ограничимся рассмотрением наиболее широко применяемого способа

инициализации с помощью строкового литерала. Пример.

char str3[10] = “Hello”;

В результате выполнения этой строки программного кода будет выделено 10 байт памяти. В первых шести байт этой памяти будет записан текст константы, а затем нуль-символ.

Отметим, что при наличии инициализатора требуемый объем памяти можно не указывать. Пример.

charstr4[10] = “Hello”;

В этом случае будет выделено шесть байт памяти.

Следует отметить, что инициализировать строковую переменную можно только в момент ее определения. Ниже следующий код содержит синтаксическую ошибку.

char str4[10];

str4 = “Hello”; // Синтаксическая ошибка

    1. Операции со строковыми переменными

Со строковыми переменными можно выполнять только поэлементные операции. Все остальные операции:

  • присваивание (копирование),

  • сравнение,

  • поиск подстрок и др.

следует выполнять либо с помощью библиотечных функций, либо разрабатывать собственную (пользовательскую) функцию.

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