Имеется несколько способов описания и задания строк:
- Строковая константа.
- Символьный массив как строка.
- Указатель на символьный тип как строку.
- Многомерный символьный массив как набор строк.
- Массив указателей символов как набор строк.
Рассмотрим указанные способы описания строк и приемы работы со строковыми данными при различных вариантах описания.
1.Задание строки в форме строковой константы.
При этом строка задается в “ “, компилятор сам добавляет в конце \0. Используется чаще всего в управляющих строках операторов.
scanf (“%f…”,…);
printf (“rez=…”,…);
printf(“Исходные данные \n”);
2.Задание строки в виде массива символьного типа.
При этом возможны два случая: явное указание длины и неявное указание длины массива.
- Явное указание длины подразумевает указание конкретного количества символов, которые могут быть записаны в виде строки:
char <имя> [N];
где: char - тип массива символов;
< имя > - имя массива;
N – максимальная размерность массива, или другими словами количества символов, которые могут быть записаны.
Например: char texts[25].
Одновременно с объявлением возможно инициализировать строку:
char имя[N]=”последовательность из К–символов”;(К<=N-1)
char aud[20]=”аудитория 8.712”
- При неявном указании длины организуется массив такой длины, сколько символов в заданной строке +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)
Ввод-вывод строковых данных
При вводе-выводе строк необходимо обязательно зарезервировать память для строки.
Для ввода строковых данных возможно использовать следующие функции: scanf () с форматом %s;
gets(имя строки).
Например: char fio[30];
scanf(“%s”, fio);
gets (fio);
Для вывода строковых данных возможно использовать функции:
ptintf() с форматом %s;
puts(имя строки).
Например: printf(“%s”, fio);
puts(fio);
Обе функции выводят все содержимое строки на экран без 0- символа. Отличие состоит в том, что printf() может переводить курсор на другую строку или нет, а puts() – переводит обязательно.