|
Программирование >> Элементы языков с и с++
Глава 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 (т. е. количество символов в строке) без учета символа \о - признака конца строки.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |