Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы_1 / Лабораторная работа 7 - Динамические массивы.doc
Скачиваний:
17
Добавлен:
20.03.2016
Размер:
56.32 Кб
Скачать

Лабораторная работа 7 обработка строк

Цель работы: знакомство с программными средствами описания и обработки строковых данных в языке Си.

Методические указания к выполнению работы:

Строки - это последовательность символов, заключенная в кавычки. В конце каждой строки компилятор добавляет нулевой символ, представляемый управляющей последовательностью \0. Строка описывается как массив символов. Число элементов массива равно числу элементов в строке плюс символ конца строки (\0). Символьная строка в программе может располагаться на нескольких строках. Для переноса используется обратная дробная черта с последующим нажатием клавиши ввод. Обратная дробная черта игнорируется компилятором, и следующая строка считается продолжением предыдущей. Для работы со строками очень удобно использовать указатели.

Пример. Записать введенную строку символов в обратном порядке.

#include<stdio.h>

void main()

{

int top, bot;

char string[10], temp; /*описание строки как массива символов*/

scanf("%s", string); /* при вводе строк символ & не используется, так как имя массива является указателем на его начало */

for(top = 0, bot = 10; top < bot; top++, bot--) {

temp = string[top];

string[top] = string[bot];

string[bot] = temp;

}

printf("%s\n", string);

}

Для ввода одиночного символа из входного потока используется функция getchar(). Для вывода одиночного символа используется функция putchar(ch), где ch - выводимый символ. Аргументом функции вывода может быть одиночный символ (включая знаки, представляемые управляющими последовательностями), переменная или функция, значением которой является одиночный символ.

Пример. Программа вводит из входного потока один символ, а затем выводит его на экран.

#include<stdio.h>

void main()

{

char ch;

ch = getchar();

putchar(ch);

}

Пример. Программа, реализующая чтение и печать символов до ввода знака.

#include<stdio.h>

#define STOP

void main()

{

char ch;

while((ch = getchar()) != STOP)

putchar(ch);

}

В условии, стоящем после ключевого слова while, реализовано сразу три действия: ввод символа с помощью функции getchar(); занесение символа в переменную ch; проверка на признак конца ввода. Для реализации проверки на конец ввода последовательности символов используется идентификатор STOP, определенный директивой препроцессора.

Операции со строками

Описание функции работы со строками содержится в файле <string.h> библиотеки стандартных функций.

1. Соединение последовательностей символов.

char *strcat(char *s1, char *s2)

Функция возвращает указатель на полученную строку.

2. Поиск первого вхождения символа в строку.

char *strchr(char *s, int c)

Функция просматривает строку (обращение к строке с помощью указателя s) и ищет символ с кодом c. Возвращает указатель на найденный символ или пустое значение.

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

int strcmp(char *s1, char *s2)

Сравниваются две указанные строки. Результат - переменная типа int:

s1<s2 отрицательное значение

s1==s2 значение 0

s1>s2 положительное значение

4.Копирование символов.

char *strcpy(char *s1, char *s2)

Копируется последовательность символов, указанная параметром s1 по адресу s2.

5. Определение длины строки (без завершающего нуля).

int strlen(char *s)

6. Функции проверки символов.

Для проверки символов используются функции, возвращающие значения "истина" или "ложь". Прототипы этих функций описаны в файле <ctype.h> библиотеки стандартных функций. Функция "Истина", если

isalpha(c) c - символ алфавита

isupper(c) c - символ верхнего регистра

islower(c) c - символ нижнего регистра

isdigit(c) c - цифра от 0 до 9

isxdigit(c) c - шестнадцатеричная цифра

isalnum(c) с - буква или цифра

isspace(c) c - пробел, табуляция, перевод строки, перевод формата

Для ввода и вывода строк в программе удобно использовать функции gets(char *string) и puts(char * string).

Пример. Программа проверяет введенную строку и, затем, выводит на экран ту ее часть, которая начинается с символа 'y'.

#include<stdio.h>

#include<string.h>

void main()

{

char string[10];

char *ptr;

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

gets(string);

ptr = strchr(string,'y');

printf("это строка %s\n", ptr);

}