Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Программирование на языке Си

..pdf
Скачиваний:
15
Добавлен:
12.11.2023
Размер:
17.16 Mб
Скачать

564

Программирование на языке Си

П р о д о л ж е н и е

Функция

 

Прототип и краткое описание действий

sqrt

double

s q r t (double х);

 

Возвращает положительное значение квадратного корня

tan

double

tan (d o u b le x);

 

Функция тангенса. Угол (аргумент) задается в радианах.

-J x .

tanh

double tan h (d o u b le х);

 

Возвращает значение гиперболического тангенса для х.

Таблица П3.2

Функции и макросы проверки и преобразования символов (файл ctype.h)

Функция

Прототип н краткое описание действий

isalnum

int isalnum(int c);

 

Дает значение не нуль, если о - код буквы или цифры н- Z,а +

 

z,0 + 9),и нуль - в противном случае.

isalpha

int isalpha(int с);

 

Дает значение не нуль, если о - код буквы (А Z,а 4- z),и нуль -

 

в противном случае.

isascii

int isascii (int с),‘

 

Дает значение не нуль, если с есть код ASCII, т.е. принимает зна­

 

чение от 0 до 127, в противном случае - нуль.

iscntrl

int iscntrl(int с);

 

Дает значение не нуль, если с - управляющий символ с кодами

 

0x00 + OxOlF или 0x7F, и нуль - впротивном случае.

isdigit

int isdigit(int с);

 

Дает значение не нуль, если с - цифра (0 ч- 9 ) в коде ASCII, и

 

нуль - в противном случае.

isgraph

int isgraph(int с);

 

Дает значение не нуль, если с - видимый (изображаемый) символ

 

с кодом (0x21 + 0х7Е), и нуль - в противном случае.

islower

int islower(int с);

 

Дает значение не нуль, если с - код буквы на нижнем регистре

 

-г- z),и нуль - в противном случае.

Приложение 3

565

 

 

 

 

П р о д о л ж е н и е

Функция

 

' Прототип и краткое описание действий

isprint

i n t

i s p r i n t ( i n t

с);

 

 

Дает

значение не нуль, если

с - печатный символ с кодом

 

(0x20 + 0х7Е), и нуль - в противном случае.

ispunct

i n t

is p u n c t( in t

с);

 

 

Дает значение не нуль, если с - символ-разделитель (т.е. соответ­

 

ствует i s c n t r l или issp ace ) и нуль - в противном случае.

isspace

i n t

is s p a c e ( in t

с);

 

 

Дает значение не нуль, если с -

обобщенный пробел: пробел,

 

символ табуляции, символ новой строки или новой страницы,

 

символ возврата каретки (0x09 4-0x0D,0x20), и нуль-в про­

 

тивном случае.

 

 

isupper

i n t

is u p p e r ( in t

с);

 

 

Дает значение не нуль, если с - код буквы на верхнем регистре

 

(А+ Z), и нуль - в противном случае.

isxdigit

i n t

i s x d i g i t ( i n t

с);

 

 

Дает значение не нуль, если с - код шестнадцатеричной цифры

 

(0 + 9, А+ F, а + f ), и нуль - в противном случае.

toascii

i n t

t o a s c i i ( i n t

с) ;

 

 

Преобразует целое число с в символ кода ASCII, обнуляя все би­

 

ты, кроме младших семи. Результат от 0 до 127.

tolower

i n t

to lo w e r(in t

с);

 

 

Преобразует код буквы с к нижнему регистру, не буквенные ко­

 

ды не изменяются.

 

 

toupper

i n t

to u p p e r(in t

с);

 

 

Преобразует код буквы с к верхнему регистру, не буквенные ко­

 

ды не изменяются.

 

 

Таблица ПЗ.З

Функции ввода-вывода для стандартных потоков (файл stdio.li)

Функция

Прототип и краткое описание действий

getch

i n t g e tc h (v o id );

 

Считывает один символ с клавиатуры без отображения на экране.

566

Программирование на языке Си

 

П р о д о л ж е н и е

Функция

Прототип и краткое описание действий

getchar

int getchar(void);

 

Считывает очередной символ из стандартного входного потока

 

(stdin).

gets

char *gets(char *s);

 

Считывает строку s из стандартного входного потока (stdin).

printf

int printf(const char *format [, argument,...]);

 

Функция форматированного вывода в стандартный поток stdout.

putchar

int putchar(int с);

 

Записывает символ с в стандартный поток вывода (stdout).

puts

int puts(const char *s);

 

Записывает строку s в стандартный поток вывода (stdout).

scanf

int scanf(const char *format[, address, ...]);

 

Функция форматированного ввода из стандартного потока stdin.

sprintf

intsprintf(char *s, const char *format[,

 

argument, ...]);

 

■Функция форматированной записи в строку s.

sscanf

int sscanf(const char *s, const char *format[,

 

address, ...]);

 

Функция форматированного Чтения из строки s.

ungetch

int ungetch(int c);

 

Возвращает символ с в стандартный поток ввода stdin, заставляя

 

его быть следующим считываемым символом.

 

Таблица П3.4

 

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

 

(файлы string.h, stdlib.h)

Функция

Прототип и краткое описание действий

atof

double atof(const char *str);

 

Преобразует строку s t r в-вещественное число типа double.

atoi

int atoi(const char *str);

 

Преобразует строку str в целое число типа int.

Приложение 3

567

П р о д о л ж е н и е

Функция

atol

itoa

Прототип и краткое описание действий

long

a to l( c o n s t

ch ar * s tr) ;

Преобразует строку s t r

в целое число типа long.

ch a r

* ito a ( in t

v,

ch a r * s tr , i n t baz);

Преобразует целое v в строку s tr . При изображении числа ис­ пользуется основание baz (2 < baz < 36). Для отрицательного числа и baz = 10 первый символ "минус" (-).

Itoa

strcat

strchr

strcmp

strcpy

strcspn

strdup

strlen

strlwr

strncat

ch ar

* lto a (lo n g v,

ch ar

* s t r ,

i n t

baz);

 

Преобразует длинное целое v

в строку s tr . При изображении

числа используется основание baz (2 <baz < 36).

 

ch ar

*s tr c a t( c h a r

*sp,

c o n st

ch a r

* s i) ;

 

Приписывает строку s i к строке sp (конкатенация строк).

ch a r

*s trc h r (c o n s t

ch ar

* s tr ,

i n t

c);

 

Ищет в строке s t r первое вхождение символа с.

 

i n t

strcm p (co n st ch ar

* s t r l ,

c o n st ch a r

* str2 );

Сравнивает строки s trl.H

s tr2 . Результат отрицателен, если

s t r l

< s tr2 ; равен нулю, если s t r l

=

s t r 2, и положите­

лен, если s t r l > s tr 2

(сравнение беззнаковое).

 

ch a r

* strc p y (c h a r

* sp ,

c o n st

ch a r

* s i) ;

 

Копирует байты строки s i в строку sp.

 

 

 

i n t

s trc s p n (c o n s t

ch a r

* s t r l ,

c o n st ch ar

* str2 );

Определяет длину первого сегмента строки s t r l , содержащего

символы, не входящие во множество символов строки str2 .

ch ar

* strd u p (c o n st

ch ar

* s tr);

 

 

Выделяет память и переносит в нее копию строки s tr .

 

unsigned s tr le n ( c o n s t

ch ar * s tr ) ;

 

 

Вычисляет длину строки s tr .

 

 

 

 

ch ar

*s trlw r( c h a r

* s tr);

 

 

 

Преобразует буквы верхнего регистра в строке в соответствую­ щие буквы нижнего регистра.

ch ar *s tr n c a t (char *sp, c o n st ch a r

* s i, i n t

k o l);

sp (конкате­

Приписывает k o l символов строки s i к строке

нация).

 

568

Программирование на языке Си

 

 

 

 

 

 

 

 

 

П р о д о л ж е н и е

Функция

 

 

Прототип и краткое описание действий

 

strncmp

i n t

strn cm p (co n st

ch ar

* s t r l ,

c o n st

ch ar * s tr2 ,

 

i n t

k o l);

 

 

 

 

 

 

 

 

Сравнивает части строк s t r l

и s tr2 ,

причем рассматриваются

 

первые

k o l символов. Результат

отрицателен,

если s t r l

<

 

s tr2 ;

равен нулю, если s t r l

==

s tr2 ,

и положителен, если

 

s t r l

> str2 .

 

 

 

 

 

 

 

strncpy

ch a r

 

* strn cp y (char * sp ,

c o n st

char * s i ,

i n t

 

k o l);

 

 

 

 

 

 

 

 

 

Копирует k o l символов строки s i в строку sp ("хвост" отбрасы­

 

вается или дополняется пробелами).

 

 

 

 

 

strnicmp

i n t

strn ic m p (c h a r

* s t r l , c o n st

ch ar

* s tr 2 ,

i n t

 

k o l);

 

 

 

 

 

 

 

 

 

Сравнивает не более k o l символов строки s t r l

и строки s tr2 ,

 

не делая различия регистров (см. функцию strncm p ()).

 

strnset

strpbrk

ch a r

*s tr n s e t( c h a r

* s tr ,

i n t c, i n t k o l);

Заменяет первые k o l символов строки s t r символом с.

char

*strp b rk (c o n st

char

* s tr l,c o n s t char *str2) ;

Ищет

в строке s t r l первое появление любого из множества

символов, входящих в строку str2 .

strrchr

strset

ch a r * s trrc h r(c o n s t ch ar * s tr , i n t c); Ищет в строке s t r последнее вхождение символа с.

c h a r * s tr s e t( c h a r * s tr , i n t с); Заполняет строку str заданным символом с.

strspn

i n t

s trs p n (c o n s t ch a r * s t r l , c o n st ch ar * s tr2 );

 

Определяет длину первого сегмента строки s t r l , содержащего

 

только сймволы, из множества символов строки str2 .

strstr

char

* s trs tr(c o n s t char * s tr l,

const char * s tr 2 ) ;

 

Ищет в строке s t r l подстроку s tr2 . Возвращает указатель на

 

тот элемент в строке s t r l , с

которого начинается подстрока

 

s tr2 .

 

 

strtod

double s tr to d ( c o n s t ch ar

* s tr ,

ch ar * *endptr);

 

Преобразует символьную строку s t r в число двойной точности.

Если e n d p tr не равен NULL, то * endptr возвращается как ука­ затель на символ, при достижении которого прекращеночтение строки s tr .

Приложение 3

569

П р о д о л ж е н и е

Функция

strtok

Прототип и краткое описание действий

ch ar * s trto k (c h a r * s t r l , c o n st ch a r * str2 );

Ищет в строке s t r l лексемы, выделенные символами из второй строки.

strtol

strupr

long s tr to l (const char * str, char **endptr, in t baz) ; Преобразует символьную строку s t r к значению "длинное чис­ ло" с основанием baz (2 £ baz < 36). Если e n d p tr не равен NOLL, то *en d p tr возвращается как указатель на символ, при достижении которого прекращено чтение строки s tr .

ch ar *s tru p r( c h a r * s tr);

Преобразует буквы нижнего регистра в строке s t r в буквы верх­ него регистра

ultoa

char *ultoa(unsigned long v, char * s t r , i n t b a z );

 

Преобразует беззнаковое длинное целое v в строку s tr .

Таблица П3.5

Функции для выделения и освобождения памяти (файлы alloc.h, stdlib.h)

Функция

calloc

Прототип и краткое описание действий

v o id * ca llo c (u n sig n ed n, unsigned m);

Возвращает указатель на начало области динамически распреде­ ленной памяти для размещения п элементов по, ш байт каждый. При неудачном завершении возвращает значение NULL.

соreleft

free

unsigned

c o r e le f t (void); - для схем распределения памя­

ти в Turbo С: tiny, small, medium.

unsigned

long c o r e le f t (void); - для других схем рас­

пределения памяти.

Возвращает значение объема неиспользованной памяти. Функция уникальна для Turbo С, где приняты упомянутые схемы распре­ деления памяти.

v o id f r e e (void *Ы );

Освобождает ранее выделенный блок динамически распределяе­ мой памяти с адресом первого байта Ы .

ЗТ-згм

570

Программирование на языке Си

 

П р о д о л ж е н и е

Функция

Прототип и краткое описание действий

malloc

void ‘malloc(unsigned s);

 

Возвращает указатель на блок динамически распределяемой па­

 

мяти длиной s байт. При неудачном завершении возвращает зна­

 

чение NULL.

realloc

void ‘realloc(void *Ы, unsigned ns);

 

Сохраняя содержимое, изменяет размер участка динамической

 

памяти с адресом начала Ы , делая его равным ns (байт). Если

 

Ы равен NULL, то функция выполняется как malloc 0 . При не­

 

удачном завершении возвращает значение NULL.

Таблица П3.6

Функции для работы с терминалом в текстовом режиме (файл conio.ii)

Функция

Прототип и краткое описание действий

clreol

void clreol(void);

 

Стирает символы от позиции курсора до конца строки в тексто­

 

вом окне.

clrscr

void clrscr(void) ;

 

Очищает экран.

cgets

char *cgets(char *str);

 

Выводит на экран строку str.

cprintf

int cprintf(const char ‘format[, argument,...]);

 

Выводит форматированную строку в текстовое окно, созданное

 

функцией window ().

cputs

int cputs(char *str);

 

Помещает в символьный массив str строку с клавиатуры (кон­

 

соли).

cscanf

int cscanf(const char ‘format[, address, ...]);

 

Функция форматированного ввода, которая используется при

 

работе с терминалом в текстовом режиме

delline

void delline(void);

 

Удаляет строку в текстовом окне (где находится курсор).

Приложение 3

 

 

571

 

 

 

 

П р о д о л ж е н и е

Функция

 

Прототип и краткое описание действий

gotoxy

v o id

g o to x y (in t х,

i n t у);

 

Перемещает курсор в позицию текстового окна с координатами

 

(х,у).

 

 

 

highvideo

v o id

h ig h v id eo (v o id );

 

 

Повышает яркость символов, выводимых на экран после ее вы­

 

зова.

 

 

 

movetext

i n t

m o v e te x t(in t

x O ,in t

y O ,in t x l , i n t y 2 ,in t

 

x ,i n t y);

 

 

 

Переносит текстовое окно в область экрана, правый верхний

 

угол которой имеет координаты (х, у). Координаты угловых то­

 

чек окна - (хО, уО), (xl, yl).

 

normvideo

v o id

norm video(void);

 

 

Устанавливает нормальную яркость выводимых на экран симво­

 

лов.

 

 

 

textattr

v o id

t e x t a t t r ( i n t

n ew attr);

 

Устанавливает атрибуты (фон, цвет) символов, выводимых на

 

экран.

 

 

 

textbackg

v o id

te x tb a c k g ro u n d (in t

с);

round

 

 

 

 

textcolor

textmode

wherex

wherey

window

Устанавливает цвет фона по значению параметра с.

v o id te x tc o lo r ( in t с);

Устанавливает цвет символов по значению параметра с.

v o id te x tm o d e(in t m);

Переводит экран в текстовый режим по значению параметра т.

i n t w herex(void);

Возвращает значение горизонтальной координаты курсора.

i n t w herey(void);

Возвращает значение вертикальной координаты курсора.

v o id w indow (int x O ,in t y O ,in t x l , i n t y l); Создает текстовое окно по координатам угловых точек (хО, уО), (xl, yl).

Функции из табл. П3.6 поддерживаются только на IBM PC (в MS-DOS) и совместимых с ним компьютерах.

37*

572

Программирование на языке Си

Таблица П3.7

Специальные функции

 

 

 

 

 

 

 

 

 

Местона­

Функция

 

 

Прототип и краткое описание действий

 

хождение

 

 

 

 

 

 

 

 

 

прототипа

delay

void delay(unsigned x);

 

 

 

dos.h

 

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

 

getenv

char *getenv(const char +name);

 

stdlib.h

 

Ищет в списке переменных среды имя, заданное па­

 

 

раметром паше. В случае нахождения возвращает

 

 

указатель на строку, являющуюся значением этой

 

 

переменной среды.

 

 

 

 

 

kbhit

int kbhit(void);

 

 

 

 

conio.h

 

Возвращает ненулевое целое, если в буфере клавиа­

 

 

туры присутствуют коды нажатия клавиш, в против­

 

 

ном случае - нулевое значение.

 

 

 

 

memcmp

int

memcmp (const void

*sl,

const

void

mem.h

 

*s2,

 

unsigned n);

 

 

 

 

 

 

Сравнивает посимвольно две области памяти si и s2

 

 

длиной п байт. Возвращает значение меньше нуля,

 

 

если si < s2, нуль, если si

== s2, и больше ну­

 

 

ля, если si >

s2.

 

 

 

 

mem.h

memcpy

void

 

*memcpy (void

*p,

const void

*i,

 

unsigned n);

 

 

 

 

 

 

Копирует блок длиной n байт йз области памяти i в

 

 

область памяти р.

 

 

 

 

 

memicmp

int

memicmp

(const

void

*sl,

const

void

mem. h

 

*s2, unsigned n);

 

 

 

 

 

 

Подобна memcmp, за тем исключением, что игнори­

 

 

руются различия между буквами верхнего и нижнего

 

 

регистра.

 

 

 

 

 

 

memmove void

+memmove (void *dest, const void

mem.h

 

*src,

int n);

 

 

 

 

 

Копирует блок длиной n байтов из src в dest. Возвращает указатель dest.

Приложение 3

573

П р о д о л ж е н и е

Функция

Прототип и краткое описание действий

memset

void *memset (void *s, int c, unsigned n) ;

 

Записывает во все байты области памяти s значение

 

с.Длина области s равна п байт.

nosound

void nosound(void);

 

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

 

функцией sound () .

Местона­

хождение

прототипа

mem.h

dos.h

peek

int peek(unsigned s, unsigned c);

dos .h

 

Возвращает целое значение (слово), записанное в

 

 

сегменте s со смещением с.

dos.h

peekb

char peekb(unsigned s, unsigned c);

 

Возвращает один байт, записанный в сегменте s со

 

 

смещением с,т.е. по адресу s: с.

 

poke

void poke (unsigned s, unsigned c, int v);

dos .h

 

Помещает значение v в слово сегмента s со смеще­

 

 

нием с,т.е. по адресу s: с.

 

pokeb

void pokeb(unsigned s, unsigned c, char v);

dos.h

 

To же, что и poke, но помещает один байт v по ад­

 

 

ресу s: с.

 

putenv

int putenv(const char *name);

stdlib.h

 

Добавляет строку в окружение программы.

 

rand

int rand(void);

stdlib.h

 

Возвращает псевдослучайное целое число из диа-

 

 

па-зона 0 +(215-1 ), может использовать функцию

 

 

srand() .

 

signal

int signal(int sig);

signal.h

 

Вызывает, программный сигнал с номером sig. Ис­

 

 

пользуется для обработки исключительных ситуаций

 

 

в языке Си.

 

sound

void sound(unsigned f);

dos .h

 

Вызывает звуковой сигнал с частотой f Гц.

 

srand

void srand(unsigned seed);

stdlib.h

 

Функция инициализации генератора случайных чи­

 

 

сел (rand); seed - любое беззнаковое целое число.

 

Соседние файлы в папке книги