Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вариант_№20.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
347.65 Кб
Скачать

Int main(void)

{

FILE *fp;

int word;

/* записать в файл слово */

fp = open(FNAME,"wb");

if(fp==NULL)

{

printf("Ошибка при открытии файла\n");

exit(1);

}

word = 94;

putw(word,fp);

if(ferror(fp))

printf("Ошибка, при записи в файл\n");

else

printf("Успешная запись в файл\n");

fclose(fp);

/* повторное открытие файла */

fp = fopen(FNAME,"rb");

if(fp==NULL)

{

printf("Ошибка при открытии файла%s\n",FNAME);

exit(1);

}

word = getw(fp);

if(ferror(fp))

printf("Ошибка, при чтении из файла\n");

else

= 93 =

printf("Успешное чтение в файле, word = %d\n",word);

fclose(fp);

unlink(FNAME);

return 0;

}

qsort

Функция Сортирует данные, применяя быстрый алгоритм

сортировки.

Синтаксис #include<stdlib.h>

void qsort(void *base, size_t nelem, size_t width,

int(*fcmp)(const void *, const void *));

Файл, содержащий stdlib.h

прототип

Описание Функция qsort применяет алгоритм быстрой сорти-

ровки "средний из трех". Функция qsort сортирует

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

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

мой с помощью указателя fcmp.

- base адресует базу (нулевой элемент) сортируе-

мой таблицы.

- nelem - число элементов таблицы;

- width - размер каждого элемента таблицы в бай-

тах.

Функция *fcmp - функция сравнения - получает два

аргумента elem1 и elem2, которые представляют со-

бой два указателя на 2 элемента таблицы. Функция

сравнения *fcmp сравнивает между собой два адре-

суемых элемента таблицы (*elem1 и *elem2) и возв-

ращает в зависимости от результата сравнения це-

лое число.

Если элементы: *fcmp возвращает:

ЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂ

*elem1<*elem2 целое <0

*elem1==*elem2 0

*elem1>elem2 целое >0

ЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂ

При сравнении символ "меньше, чем" (<) означает,

что левый элемент в конце сортировки должен ока-

= 94 =

заться перед правым аргументом. Аналогично, сим-

вол "больше, чем" (>) означает, что в конце сор-

тировки левый элемент должен оказаться после пра-

вого.

Возвращаемое Нет.

значение

Переносимость Функция поддерживается на системах UNIX и стандар-

том ANSI C.

Смотрите также bsearch, lsearch.

Пример:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int sort_function(const void *a,const void *b);

char list[5][4] = {"cat", "car", "cab", "cap", "can"};

Int main(void)

{

int x;

qsort((void *)&list, 5, sizeof(list[0]), sort_function);

for(x=0; x<5, x++)

printf("%s\n",list[x]);

}

int sort_function(const void *a,const void *b)

{

return(strcmp(a,b));

}

Вывод:

cab

can

cap

car

cat

raise

Функция Посылает программный сигнал выполняемой программе.

Синтаксис #include<signal.h>

int raise(int sig);

= 95 =

Файл, содержащий signal.h

прототип

Описание raise посылает сигнал sig программе. Если програм-

ма загрузила процедуру обработки сигнала, для

сигнала sig, то запускается данная процедура. Ес-

ли процедуры обработки для данного сигнала нет,

то производятся действия, определенные для данно-

го сигнала по умолчанию.

Имеются следующие типы сигналов, определенные в

файле signal.h:

ЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂ

Сигнал Значение

ЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂ

SIGABRT Ненормальное завершение (*)

SIGFPE Неверная операция над числами с

плавающей точкой

SIGILL Неверная инструкция (#)

SIGINT Прерывание по Ctrl_Break.

SIGSEGV Неверный доступ к памяти (#)

SIGTERM Запрос на завершение программы (*)

ЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂ

Сигналы помеченные (*) не генерируются DOS или

Turbo C++, во время нормальной работы. Однако они

могут генерироваться с помощью функции raise.

Сигналя помеченные (#) не могут генерироваться

асинхронно процессорами 8088 или 8086, однако мо-

гут генерироваться некоторыми другими процессора-

ми (смотри signal).

Возвращаемое При успешном завершении raise возвращает 0, в про-

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

Переносимость raise поддерживается системами UNIX и стандартом

ANSI C.

Смотрите также abort, signal.

Пример:

#include<signal.h>

int main()

{

int a,b;

a = 10;

b = 0;

if(b==0)

= 96 =

/* предварить ошибку при делении на 0 */

raise(SIGFPE);

a = a / b;

return 0;

}

rand

Функция Генератор случайных чисел.

Синтаксис #include<stdlib.h>

int rand(void);

Файл, содержащий stdlib.h

прототип

Описание Функция rand использует мультипликативный конгру-

энтный генератор случайных чисел с периодом 2^32,

чтобы получать псевдослучайные числа в диапазоне

от 0 до RAND_MAX. Символическая константа

RAND_MAX определена в stdlib.h; ее значение

2^15ё1.

Переносимость Функция поддерживаются на системах UNIX и стандар-

том ANSI C.

Смотрите также random, randomise, srand.

Пример:

#include <stdio.h>

#include <stdlib.h>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]