Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по программированию.doc
Скачиваний:
11
Добавлен:
13.11.2019
Размер:
1.2 Mб
Скачать

Void main()

{

int i=0; char S[]="This is string";

while(S[i++]!='\0’);

printf(“%d",- -i);

}

Массив S инициализирован в виде строки, заключенной в кавычки. Определенные таким образом символьные мас­сивы, которые будем называть строками, несколько от­личаются от массивов, определенных стандартным способом. Во-первых, для них существует целый набор функций, опи­санных в заголовочном файле string.h, о которых мы поговорим позже. Во-вторых, в конец строки всегда доба­вляется специальный символ '\0' — признак конца стро­ки. Программисту не нужно заботиться об этом симво­ле, поскольку он вставляется системой автоматически, но помнить о его существовании в конце массива следу­ет. Его присутствие может оказаться полезным, как это использовано в нашей программе. Цикл while здесь ка­ждый раз проверяет, достигли ли мы конца строки, и увеличивает счетчик i на единицу. После выхода из ци­кла счетчик имеет значение, равное количеству символов в строке, с учетом символа конца строки. Таким образом, в результате работы программы будет напечатана длина строки - в данном случае 14, число символов, помещен­ных между кавычками (включая два символа пробела).

Укажем, что числовой эквивалент символа '\0' есть 0. По этой причине понятно, что условие в цикле можно упростить до вида S[i++]! = 0. Автор был бы безмерно счастлив, если бы в этот момент внимательный читатель воскликнул: "А почему не просто while(S[i++]) ?". Он прав! Так и сделайте.

В упомянутом заголовочном файле string.h имеется довольно много строковых функций. Рассмотрим некото­рые из них. Функция gets(Имя) осуществляет ввод стро­ки с консоли. Здесь Имя есть имя символьного массива, в который будет записана вводимая с клавиатуры стро­ка. Сам ввод осуществляется следующим образом. Наби­рается строка целиком так, как она должна выглядеть. После набора нажимается клавиша Enter. Простейшая программа, инициализирующая строку вводом с клавиа­туры, выглядит так:

#include< string.h >

Void main()

{

char S[100]; gets(S);

}

Здесь максимальная длина вводимой строки - 100 сим­волов. При попытке ввода более длинной строки никакой ошибки система не обнаружит, но возникнет уже описан­ная ситуация с выходом за границы массива с непредска­зуемыми последствиями.

Функция puts(Имя) выводит на экран строку, описан­ную символьным массивом, названным как Имя. Незави­симо от объявленной длины массива, строка выводится до символа конца строки. Следующая программа произ­водит вывод на экран строки, инициализированной при описании:

#include< string.h >

Void main()

{

char SYM[]=”QWER’\n’qwer";

puts(SYM);

}

В результате работы программы сначала печатается часть строки QWER, затем печатается символ перево­да строки, то есть просто происходит переход на новую строчку, где печатается остальная часть qwer.

Еще одна полезная функция из заголовочного файла string.h позволит определить длину строки без "самодельных" ухищрений, которые мы предпринимали. Это функция strlen(Имя), возвращающая целое число, равное длине строки, опять же от начала до признака конца. Теперь вместо соста­вленной ранее программы можно предложить более про­стую: