Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
aip-50-60.docx
Скачиваний:
1
Добавлен:
11.09.2019
Размер:
76.6 Кб
Скачать

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

Хотя в С и имеется тип данных char, в нем отсутствует тип данных для символьных строк. Вместо этого строка должна быть представлена в виде массива символов. Каждый символ строки хранится в отдельной ячейке массива, а в последней ячейке содержится null-символ \0.

В следующей программе показаны три основных способа представления и обработки символьной строки. Массив szmode1 инициализируется посимвольно при помощи операции присваивания, массив szmode2 инициализируется при помощи функции scanf(), а массив szmode3 инициализируется при описании.

// 09STRING.CPP

// В этой программе на C++ показано использование строк

main()

{

char szmode1[4], //car

szmode2[6]; //plane

staticchar szmode3[5]="ship"; //ship

szmode1[0]='c';

szmode1[1]='a';

szmode1[2]='r';

szmode1[3]='\0';

printf("\n\n\tPliase enter the mode --> plane ");

scanf("%s",szmode2);

printf("%s\n",szmode1);

printf("%s\n",szmode2);

printf("%s\n",szmode3);

}

Хотя строка в массиве szmode1, "car", имеет три символа, сам массив szmode1 имеет четыре элемента — по одному на символ и еще один для null-символа. Запомните: \0 считается одним символом. Аналогичным образом, строка "plane" содержит пять символов (в строке "ship" — четыре), но требует для хранения шесть ячеек (пять для szmode3), включая null-символ. Напоминаем, что массив символов szmode3[5] можно также инициализировать, используя для этого вариант записи с фигурными скобками:

static char szmode3[5] = {'s','h','i','p','\0'};

Когда при перечислении начальных значений символов массива используются двойные кавычки, компилятор автоматически добавляет null-символ окончания строки \0. Кроме того, эта строка может быть записана следующим образом:

static char szmode3[] = "ship";

Здесь используется безразмерный массив. Конечно, для инициализации символьного массива можно выбрать и более длинный способ, такой как для массива szmode1. Чаще для считывания строки непосредственно в массив используется функция scanf(), как это было сделано с массивом szmode2. В функции scanf() используется спецификация преобразования %s. В этом случае функция пропускает разделительные символы (символы пробела, табуляции и возврата каретки) и считывает в символьный массив szmode2 все символы до следующего разделительного. Затем автоматически добавляется null-символ. Размер массива должен быть указан достаточно большим для размещения всей строки с null-символом. Взгляните еще раз на этот оператор:

scanf("%s",szmode2);

  1. Многомерные массивы. Инициализация двумерного массива.

Многомерные массивы.

Понятие "размерность" относится к количеству индексов, используемых для обращения к отдельному элементу массива. Глядя на объявление массива, можно определить его размерность. Если в объявлении только одна пара квадратных скобок([]), то массив — одномерный; если две пары ([][]), то двухмерный, и так далее. Массивы, имеющие более одного измерения, называются многомерными. Для моделирования пространства максимальное число измерений обычно равно 3.

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