- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
- •Int main(void)
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>
