Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс ПЯВУ 2 сем / Лабораторные. 2 сем / Лр №8. Строки / Теоретическая инфрмация к Лр№8Строки.odt
Скачиваний:
10
Добавлен:
17.04.2015
Размер:
32.13 Кб
Скачать

Теоретическая информация к Лр№8.Строки.

Оглавление.

  1. Определение символьной строки.

  2. Объявление и инициализация строк.

  3. Стандартный ввод вывод.

  4. Функции для работы со строками.

    4.1. Стандартная библиотека.

    4.2. Длина строки.

    4.3. Сравнение строк.

    4.4. Копирование строк.

    4.5. Объединение строк.

    4.6. Поиск в строках.

    4.7. Форматирование строк.

    4.8. Чтение из строки.

1.Определение символьной строки.

Символьная строка – это последовательность символом, которая заканчивается символом с кодом 0.

Символ с кодом ноль не имеет никакого изображения, в программе его записывают как '\0'.

Символ с кодом ноль (обозначается как '\0') и цифра ноль (обозначается '0', имеет код

  1. – это два разных символа.

    2. Объявление и инициализация

Строка представляет собой массив символов, поэтому и объявляется она именно как массив:

char s[80];

Однако строка отличается от массива тем, что она заканчивается символом с кодом 0 – признаком окончания строки, поэтому, если массив символов будет использоваться как строка, надо выделять на 1 байт больше памяти.

char s[80] = "Привет, Вася!";

Символы в кавычках будут записаны в начало массива s, а затем – признак окончания строки

'\0'. Оставшиеся символы не меняются, и в локальных строках там будет «мусор». Можно

написать и так

char s[] = "Привет, Вася!";

В этом случае компилятор подсчитает символы в кавычках, выделит памяти на 1 байт больше и занесет в эту область саму строку и завершающий ноль. Аналогично можно выделить память на указатель:

char *s = "Привет, Вася!";

3. Стандартный ввод и вывод строк.

Для ввода и вывода строк с помощью функций scanf и printf используется специальный

формат "%s":

#include <stdio.h>

main()

{

char Name[50];

printf("Как тебя зовут? ");

scanf("%s", Name);

printf("Привет, %s!", Name);

}

Имя строки в scanf надо передать без знака &.Функция scanf вводит строку до первого пробела.

Функция gets ( s ) и puts(s).

Название этой функции происходит от английских слов get string – получить строку.

Для вывода строки на экран можно использовать и функцию puts, которая после вывода строки еще и дает команду перехода на новую строку.

#include <stdio.h>

main()

{

char Name[50] = "Вася!";

puts( "Привет," );

puts ( Name );

}

Задача. Ввести символьную строку и заменить в ней все буквы 'A' на буквы 'Б'.

Будем рассматривать строку как массив символов. Надо перебрать все элементы массива,

пока мы не встретим символ '\0' (признак окончания строки) и, если очередной символ – это

буква 'A', заменить его на 'Б'. Для этого используем цикл while, потому что мы заранее не

знаем длину строки. Условие цикла можно сформулировать так: «пока не конец строки».

#include <stdio.h>

main()

{

char a[80];

int i;

printf( "\n Введите строку \n" );

gets ( s );

i = 0; // начать с первого символа, s[0]

while ( s[i] != '\0' ) // пока не достигли конца строки

{

if ( s[i] == 'A' ) // если очередной символ – 'A', ...

s[i] = 'Б'; // меняем его на 'Б'

i ++; // переходим к следующему символу

}

puts ( "Результат:\n" );

puts ( a );

}

Одиночный символ записывается в апострофах, а символьная строка – в кавычках.

При выводе строк с помощью функции printf часто применяется форматирование. По-

сле знака % в формате указывается размер поля для вывода строки. Перед этим числом можно также поставить знак минус, что означает «прижать к левому краю поля».

Пример вывода Результат Комментарий

printf( "[%s]", "Вася"); [Вася] Минимальное число позиций.

printf( "[%6s]", "Вася"); [ Вася] 6 позиций, выравнивание вправо.

printf("[%-6s]", "Вася"); [Вася ] 6 позиций, выравнивание влево.

printf( "[%2s]", "Вася"); [Вася] Строка не помещается в заданные 2

позиции, поэтому область вывода расширяется.