Любая символьная
константа, например "ОЙ У ПОЛИ КРИНИЧКА",
представляет собой массив символов. Во
внутреннем представлении компилятор завершает
такой массив символом "\0", так что
любая программа может по нему легко обнаружить
конец строки. Поэтому строка занимает в паямяти
на один символ больше, чем записано между
двойными кавычками. Нумерация элементов массива
начинается с нуля. Надо помнить, что, например 'T' -
это символ(буква), а ' T ' - это строка, состоящая из
двух символов: 'T' и '\0'. Отсюда следует, что пустых
строк не бывает. Строка в языке Си - это разновидность константы и ее можно присваивать некоторой переменной, представляющей массив символов: char str[]="ТЕКСТ"; Такая запись и короче и понятнее, чем общепринятая для начальной инициализации массивов: char str[]={'Т','Е','К','С','Т',}; Если длина строки в
квадратных скобках опущена, то она определяется
автоматически, по количеству присваеваемых
символов. В приведенном выше примере она равна
шести. Пример 4.1
Программа приведенная ниже (пример 4.2), выполняет сцепление двух строк. Собственно, сцепление выполняет функция concat(s,t), которая присоединят строку t к концу строки s. Объединяемые строки str1 и str2 объявлены как внешние, причем размер str1 достаточно большой, чтобы сохранить новую строку. Используя спецификацию формата %s, функция printf выводит всю строку сразу, причем она "знает", что печать остановить при достижении завершающего символа "\0". Пример 4.2
На пример 4.3 приведена программа с функцией revers(s), переставляющей символы строки s в обратном порядке. В качестве библиотечной исползуется ранее рассматривавшаяся функция length. Функция revers меняет местами символы строки, симетричные относительно ее середины; если в строке нечетное число символов, то средний символ остается на месте. Пример 4.3
|