Объявления строковых данных
Символьные строки.
Символьные строки хранят такую информацию, как имена файлов, названия книг, имена служащих и другие символьные сочетания. Большинство программ на Cи широко используют символьные строки. В Cи символьные строки хранятся в массиве типа char, который заканчивается символом NULL (или ASCII 0). Таким образом строкой в Си называется последовательность из одного или нескольких символов, которые заканчиваются на “\0” –ноль-символом. В Си отсутствует специальный тип для объявления строк, и для этого используют стандартный тип символов – char.
По отношению к строкам можно сказать следующее.
Чтобы объявить символьную строку, необходимо объявить массив типа char, Чтобы присвоить символы символьной строке, надо просто присваивоить символы элементам массива символьных строк. Программы Cи используют символ NULL (ASCII 0), чтобы отметить последний символ строки. Cи позволяет программам инициализировать символьные строки при их объявлении. Программы могут передавать символьные строки в функцию, как и любой массив.
Объявления строковых данных
Имеется несколько способов описания и задания строк:
- Строковая константа.
- Символьный массив как строка.
- Указатель на символьный тип как строку.
- Многомерный символьный массив как набор строк.
- Массив указателей символов как набор строк.
Рассмотрим указанные способы описания строк и приемы работы со строковыми данными при различных вариантах описания.
1.Задание строки в форме строковой константы.
При этом строка задается в “ “, компилятор сам добавляет в конце \0. Используется чаще всего в управляющих строках операторов.
scanf (“%f…”,…)
printf (“rez=…”,…)
printf(“Исходные данные \n”);
2.Задание строки в виде массива символьного типа.
При этом возможны два случая: явное указание длины и неявное указание длины массива.
2.1. Явное указание длины подразумевает указание конкретного количества символов, которые могут быть записаны в виде строки :
char <имя> [N];
где: char - тип массива символов;
<имя> - имя массива;
N – максимальная размерность массива, или другими словами количества символов, которые могут быть записаны в виде.
Напримерchar texts[25].
Одновременно с объявлением возможно инициализировать строку:
char имя[N]=”последовательность из К–символов”;(К<=N-1)
char aud[20]=”аудитория 8.712”
2.2. При неявном указании длины организуется массив такой длины, сколько символов в заданной строке +1 (“0” символ). Признаком массива служат квадратные скобки.
char <имя> [ ]=”последовательность символов”
В случае задания строки в виде массива, к каждому символу строки можно обращаться как к элементу массива с помощью индекса – имя[i].
3.Строка в виде указателя на символьный тип.
char *имя; = “последовательность символов”
В этом случае создается указатель на символьный тип и ему присваивается адрес размещения строки. При объявлении возможна инициализация массива.
Напрмер: char *pst1= “композитор”;
Обращение к элементу массива выглядит следующим образом: *(pst1+i).
4. Многомерный символьный, массив как набор строк.
Строковые данные можно представлять не в виде одной строки, а в виде нескольких строк. В таком случае при объявлении указывается количество строк и максимальное количество символов, которые можно поместить в одной строке.
char имя [m][n] = {“ строка 1”,
“ строка 2”,
…
“ строка L” }
char fruits[5][10] = { “яблоко”,
“ сливы”,
…
“ абрикосы” };
В данном варианте задания строк, к каждому символу можно обращаться, как к элементу двумерного массива, с помощью индексов – имя[i][j].
5. Массив указателей на символьный тип, как набор строк.
Для объявления нескольких строк можно использовать указатели.
В таком случае при объявлении указывается массив указателей на символьный тип. Размер массива соответствует количеству строк. Одновременно возможна инициализация.
char *имя [M] ={“ строка 1”,
“ строка 2”,
…
“ строка L” } L ≤ M
Для обращения к отдельному символу используется следующее выражение *(pfruits[i] +j)