Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab9_6.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
174.08 Кб
Скачать

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

Строковая переменная – массив символов, содержащий последовательность символов, которая заканчивается нуль-символом. Рассмотрим следующий программный код:

#define MAXLENGTH 129 /* ... */

char str1[MAXLENGTH];

Для переменной str1 выделяется память объемом в 129 байт. Потенциально такая переменная может работать со строками, длина которых не превосходит 128 символов. Особенность рассматриваемой переменной состоит в отсутствии явной инициализации. Неявная инициализация этой переменной будет иметь место в том случае, когда ее определение будет находиться вне тела функции. В этом случае массив str1 будет инициализирован нулями, а сама переменная может рассматриваться как пустая строка. В противном случае переменная str1 будет содержать “мусор” и не может использоваться в качестве строки. Это делает целесообразным явно инициализировать строки при их объявлении.

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

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

  • инициализация строковым литералом,

  • инициализация массивом символов.

Приведем примеры явной инициализации строковых переменных при их определении.

Пример 1.

#define MAXLENGTH 129 char str1[MAXLENGTH] = “Hello”;

В этом примере для хранения элементов массива str1 предусмотрено выделение 129 байт памяти, в начало которой будет скопирован строковый литерал. Нуль-символ (\0) в массив str1 будет занесен автоматически.

Пример 2.

#define MAXLENGTH 129 char str2[MAXLENGTH] = “ ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’”;

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

Обычно используется первый способ инициализации.

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

Пример 3.

#define MAXLENGTH 129 char str3[MAXLENGTH]; str3 = “Hello”; /* Синтаксическая ошибка*/

Здесь имеет место попытка изменить значение константного указателя, которым является str3.

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

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

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

9.4.5.Вывод строк

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

  • printf(),

  • puts(),

  • fputs().

Начнем рассмотрение с функции printf().

9.4.5.1.Вывод строк с помощью функции printf()

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

printf(“Hello, world”);

В более сложных случаях следует при выводе строк использовать спецификацию типа s. В качестве примера приведем вывод заголовка таблицы:

printf(“%5s%10s%10s”, “НОМЕР”, “АРГУМЕНТ”, “ФУНКЦИЯ”);

Здесь также необходимо выводить строковые литералы. Однако форматирование вывода лучше предоставить компилятору, а не выполнять вручную в форматной строке.

Теперь приведем пример, в котором будет выводиться строковая переменная:

#include<stdio.h> #define MAXLENGTH 129 int main(void) { char st[MAXLENGTH] = “”; /* Работа со строкой st */ printf(“%s\n”, st); }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]