Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по курсу 'Информатика'.doc
Скачиваний:
7
Добавлен:
14.07.2019
Размер:
483.84 Кб
Скачать

Строки.

Строкой – называется текстовый вектор, для которого не обязательно указывать размерность с признаком конца ‘\0’.

Описание строки.

char a[] ;

Описание и инициализация строки. Будет создана строка из 20 символов, 19 значащих и ‘\0’.

char a[]=”произвольная строка “ ;

Если бы мы создавали текстовый вектор, то аналогичное действие выглядело бы так:

Char a[19]={‘п’,’р’,’о’,’и’,’з’,’в’,’о’,’л’,’ь’,’н’,’а’,’я’,’ ’,’с’,’т’,’р’,’о’,’к’,’а’ } ;

Чтобы из него сделать строку нужно в конец добавить ‘\0’.

Ввод и вывод строки осуществляется так:

char a[] ;

scanf (“%s”, a) ; // введутся все символы до первого пробела в конце добавится ‘\0’.

printf (“%s”, a) ; // выведутся все символы до первого пробела.

char a[81] ;

gets (a) ; // введутся любые символы до нажатия “enter” в конце добавится ‘\0’.

puts (a); ; // выведутся все символы содержащиеся в строке до ‘\0’.

Имя строки а – адрес нулевого элемента, i-й элемент можно достать так:

*(a+i) одно и то же a[i].

Длину произвольной текстовой строки – h можно определить так:

For ( h=0 ; *(a+h)!=’\0’ ; h++) ;

Это же реализует стандартная функция из библиотеки #include<string.h>

h=strlen(a) ;

Можно описать массив из строк и ввести его:

char text[10][81] ;

for ( i=0 ; i<=9 ; i++) gets( text[i]) ;

Рассмотрим две задачи позволяющие научиться работать со строкой.

Посчитать число вхождений каждого различного символа в строке.

#include<stdio.h>

#include<string.h>

main()

{

int h, sh, i, j ;

char text[]=”произвольная фраза “, ch ;

h=strlen(text) ;

for ( i=0 ; i<h ; i++) // цикл по количеству символов в строке

{

ch=text[i] ; // ch – символ для поиска копий

if(ch!=’-‘) { for (j=i+1, sh=1 ; j<=h ; j++ ) // цикл поиска повторов, sh – количество копий,

if ( ch==text[j] ) { sh++ ; text[j]=’-‘ ; } // вычеркивание копий

printf ( “\n%c %d”, ch, sh ) ;

text[i]=’-‘ ;

}

}

}

Найти в строке слово максимальной длинны:

#include<stdio.h>

#include<string.h>

main()

{

int h, ss=0, i=0, j=0, maxlen=0 ; // maxlen –текущая максимальная длина строки

char text[81], word[10]=’\0’;

gets(text) ;

h=strlen(text) ;

while ( i<=h ) // перебираем все символы строки

{

if ( (*(text+i)==’ ‘)||(i==h) // если обнаружен пробел, т.е. конец слова или конец строки

if ( maxlen<(i-ss)) // если maxlen меньше длины текущего слова,

{

maxlen=i-ss ; // то запоминаем новую длину

for ( j=0 ; j<maxlen ; j++ ) *(word+j)=*(text+ss+j) ; // запоминаем слово

ss=i ; // конец предыдущего слова

}

i++ ;

}

puts (word) ;

}