Программирование >>  Элементы языков с и с++ 

1 ... 23 24 25 [ 26 ] 27 28 29 ... 200


Глава 5

Функции для работы

с символьными строками

Для работы с символьными строками в языке С существует ряд функций. Чтобы ими воспользоваться, надо в основную программу (функцию main о) включить файл string.h.

Основные стандартные строковые функции

Рассмотрим основные строковые функции.

□ Функция sprintf (). Формат:

sprintf (S, Control, argl,arg2,argN)

Эта функция родственна функции printf о, которую мы уже рассматривали. Она работает точно так же, как и printf о, но в отличие от функции printf о, которая выводит результат своей работы на стандартное выводное устройство (по умолчанию- экран), функция sprintf о результат своей работы выводит в строку s.

Это очень полезная функция: с ее помощью мы можем собрать в одну строку совершенно разнотипные данные, расположенные в переменных argl, arg2,..., argN, да еще И вставлять между ними необходимый текст, который может находиться между форматами расположенных в управляющей строке Control данных.

□ Функция strcpyo.

Формат: strcpy(sl,s2)



Эта функция выполняет то же, что и функция сору (), рассмотренная нами в разд. Головная программа для проверки функций getlineO, substrQ, соруО главы 4: она копирует содержимое строки s2 в строку si. Признак конца строки - символ \о тоже копируется.

Напомним, что строка в языке С представляет собой массив символов (описывается как char s [ ]) и что имя массива является адресом его первого элемента s[0]. Это нам пригодится в дальнейшем, когда в качестве аргументов strcpyO будут выступать не имена массивов, а имена переменных, типы которых мы будем изучать позже.

П Функция strcmp ().

Формат:

strcmp(si, s2)

Эта функция сравнивает две строки (т. е. содержимое переменных si и s2) и выдает результат сравнения в виде числового значения. Если si=s2, то функция возвращает ноль; если si<s2- возвращает отрицательное число; если si>s2 - возвращает положительное число.

Это происходит оттого, что функция сравнивает коды символов. Мы знаем, что коды символов в таблице кодирования символов ASCII, на основе которой кодируются символы в языке С, для английского алфавита расположены по возрастанию. Они занимают первую половину (первые 128 значений) таблицы. Вторая половина таблицы (остальные 128 позиций) отдана под национальные кодировки, которые, в общем случае, неупоря-дочены, что касается и кириллицы тоже. Этот момент надо учитывать при сравнении символьных строк с помощью strcmp ().

В теле функции коды строки si посимвольно сравниваются с кодами строки s2 посредством вычитания, как обычные числа (а коды и есть числа). Такая обработка символов происходит до первого несовпадения и результат вычитания выводится в качестве результата работы функции. Повторим, что такой подход возможен, потому что символы английского алфавита в таблице ASCII упорядочены по возрастанию: код символа а меньше кода символа ь, и в этом смысле строка а меньше строки ь . Поэтому если все символы, расположенные в строках на одинаковых местах, равны, то строки считаются равными, в противном случае одна строка либо меньше, либо больше другой. Таким образом строки, содержащие текст на кириллице, сравнивать с помощью этой функции нельзя. Следует отметить, что одинаковые символы, введенные на разных регистрах (т. е. большие и маленькие буквы), различаются. Это и понятно: у них в таблице ASCII разные коды.



Пример программы проверки функций

Напишем программу, на примере которой проследим, как работают рассмотренные функции (листинг 5.1).

Листинг 5.1

18.срр : Defines the entry point for the console application.

Hnclude stdafx.h Jinclude <string.h>

Jinclude <stdio.h> for getchar(),putchar()

hnclude <conio.h> for getchO

t nclude <string.h> for strcpyO,..

Jinclude <stdlib. h> atoi (), atof ()

□ Функция strcmpi ().

Формат: strcmpi (si, s2)

Эта функция работает так же, как и strcmpo, но регистров не различает (для нее, например, символ а совпадает с символом а).

□ Функция Streat ().

Формат: strcat(si,s2)

Это функция сцепления (как говорят, конкатенации) двух строк. Содержимое строки s2 дописывается в конец строки si, и результат пересылается в si.

□ Функция strlen ().

Формат: strlen(s)

Эта функция возвращает ( возвращает , значит, можно писать, например, int y=strlen(s)) длину строки s (т. е. количество символов в строке) без учета символа \о - признака конца строки.



1 ... 23 24 25 [ 26 ] 27 28 29 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика