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

1 ... 186 187 188 [ 189 ] 190 191 192 ... 200


Д 1* Д

Приложение 3 Ш iil Inl

Основные строковые типы данных, принятые в Visual С++ 2008

Тип char

Строки этого типа - типичные строки, состоящие из символов ASCII, в качестве признака конца строки имеющие нулевой символ в конце.

Основные стандартные функции для работы со строками типа char

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

Функция sprintf (S, Control,arg1,arg2,...,argN)

Эта функция родственна функции printf (), которую мы уже рассматривали (выводит результат работы на стандартное выводное устройство (по умолчанию - экран). Функция sprintf (), в отличие от функции printf (), результат своей работы выводит в строку s. Это очень полезная функция: с ее помощью мы можем собрать в одну строку совершенно разнотипные данные, расположенные в переменных argi, arg2,..., argN, да еще и вставить между ними необходимый текст, который может находиться между форматами данных, расположенных в управляющей строке Control.



Функция strcpy(s1 ,s2)

Эта функция копирует содержимое строки s2 в строку si. Признак конца строки- символ \0 тоже копируется. Напомним, что строка в языке С представляет собой массив символов (описывается как char s [ ]) и что имя массива является адресом его первого элемента s [О] (т. е. si и s2 - это указатели).

Функция strcmp(s1 ,s2)

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

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

В теле функции коды строки si посимвольно сравниваются с кодами строки s2 с помощью вычитания как обычные числа (а коды и есть числа). Такая обработка символов происходит до первого несовпадения, а результат вычитания выводится в качестве результата работы функции.

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

Функция strcmpi(s1,s2)

Эта функция работает так же, как и strcmp (), но регистров не различает: для нее, например, символ а совпадает с символом а . Аргументы si и s2 - это указатели.



Функция strlen(s)

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

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

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

Листинг П3.1

3. char-string.срр : Defines the entry point for the console application.

#include stdafx.h

#include <stdio.h> for getchar(),putchar()

#include <conio.h> for getchO

#include <string.h> for strcpyO,..

#include <stdlib.h> atoi(),atof()

#define eof -1 Ctrl+z #define maxline 1000

/* Функция getline(s,lim) вводит с клавиатуры строку в s и возвращает длину введенной строки с учетом символа \0;

lim - максимальное количество символов, которое можно ввести в строку s*/

Функция strcat(s1,s2)

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

Аргументы si и s2 -это указатели.



1 ... 186 187 188 [ 189 ] 190 191 192 ... 200

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