
- •1. Понятия алгоритма и программы. Свойства алгоритмов. Составление алгоритмов различной структуры.
- •2. Описание и типы алгоритмов поиска. Примеры.
- •3. Описание и виды алгоритмов сортировки. Примеры.
- •4. Арифметические операции. Операции отношения. Операции инкремента и декремента в языке программирования с.
- •5. Понятие массивов, векторов, матриц данных. Способы обращения к массивам в языке программирования с.
- •6.Понятие указателя, объявление указателя. Операции над указателями.
- •7. Описание и определение пользовательских функций в языке программирования с
- •8.Строковый тип данных и функции работы с ними в языке программирования с.
- •9.Организация работы с файлами. Функции работы с файлами в языке с.
- •10.Динамические структуры данных в с. Абстрактные типы данных.
8.Строковый тип данных и функции работы с ними в языке программирования с.
Строка представляет собой последовательность (одномерный массив) из одного или более символов, последним из которых является нулевой символ таблицы ASCII '\0'. Это единственный вид строки, определенный в C. Язык C поддерживает строковые константы, называемые строковыми литералами. Строковый литерал – это любая последовательность символов, заключенная в двойные кавычки ("…"). В конце литерала компилятор автоматически добавляет нулевой символ. Строковая переменная может быть сформирована как одномерный массив типа char либо с помощью указателя на переменную типа char. Количество символов в массиве (объем выделяемой памяти) должно быть не меньше, чем количество символов в строке плюс один символ для хранения символа нуль.
Синтаксис объявления имеет вид: char ID [N];где ID – идентификатор массива, N – длина массива, при этом в памяти для хранения строки выделяется N байт. Идентификатор массива – константа типа указатель, значение которой равно адресу первого элемента массива. Инициализация возможна двумя способами:
посимвольная инициализация char st[10]={'y','e','s','\0'}; при этом оставшиеся 6 позиций не будут заполнены;
инициализация на основе строковой константы char st [10]="Yes"; при этом в выделенную для строки память будут помещены 3 символа и добавлен четвертый –символ '\0'.
Инициализация и объявление возможны без указания длины массива char st[]={'y','e','s','\0'}; в этом случае будет создан массив из четырех элементов.
Существует несколько способов ввода строк:
scanf ("%s",S1); где S1 – указатель типа char* на предварительно выделенную область. При использовании формата %s аргумент рассматривается как строка. Ввод строки реализуется до пробела или нажатия [Enter]. Несколько слов вводить в одну переменную с помощью scanf нельзя;
scanf ("%Ns",S1); где N – максимальное число символов, записываемых в строку S1. Заполнение строки заканчивается при вводе N непробельных символов или выполняется до первого пробельного символа.
gets (S1); при помощи этой функции можно вводить строку, содержащую пробелы. Ввод прекращается при нажатии [Enter] или при заполнении буфера клавиатуры.
Вывод символьных строк на экран в C осуществляется с помощью функций:
printf("%s",S1); где S1 – указатель типа char*
puts (S1);
Определение длины строки: strlen (S1) – длина строки S1, исключая нулевой символ.
Копирование строк:
strcpy (S1,S2), где S1 – указатель, S2 – указатель или константа. Стрка S2 копируется посимвольно в строку S1.
Слияние строк (конкатенация): strcat (S1,S2). К концу строки S1 подсоединяется строка S2. Нулевой символ в конце строки S1 отбрасывается. Компилятор не следит, хватит ли в S1 места для S1 плюс S2.
Сравнение строк: strcmp (S1,S2). Сравниваются коды символов, находящихся на одинаковых позициях в строках S1 и S2, начиная с нулевой. В зависимости от компилятора результат работы функции следующий:
возвращается нуль, если строки одинаковы, и значение отличное от нуля, если строки не совпадают; отрицательное число, если строка S1 «меньше» строки S2 с точки зрения алфавита (ASCII-кодов), и положительное, если «больше».