Главная страница
Навигация по странице:

  • В 4. Математические функции

  • В 5. Функции общего назначения

  • переводит s в

  • выдает псевдослучайное число в диапазоне от 0 до не меньше 32767.

  • 326 Приложение В. Стандартная библиотека

  • В 8. Дальние переходы: h> 327В 7. Списки аргументов переменной длины

  • В 10. Функции даты и времени

  • 330 Приложение В. Стандартная библиотека

  • Б. Керриган, Д. Ритчи Язык программирования C. Б. Керниган, Д. зык программирования и . Издание 3е, исправленное Перевод с английского под редакцией Вс. С. Штаркмана СанктПетербург 2003


    Скачать 31.48 Mb.
    НазваниеБ. Керниган, Д. зык программирования и . Издание 3е, исправленное Перевод с английского под редакцией Вс. С. Штаркмана СанктПетербург 2003
    АнкорБ. Керриган, Д. Ритчи Язык программирования C.pdf
    Дата06.04.2017
    Размер31.48 Mb.
    Формат файлаpdf
    Имя файлаБ. Керриган, Д. Ритчи Язык программирования C.pdf
    ТипКнига
    #4546
    страница26 из 28
    1   ...   20   21   22   23   24   25   26   27   28
    321
    char *strcpy(s,ct) копирует строку включая вращает s char ct, n) копирует не более n символов строки ct в s; воз- вращает s. Дополняет результат символами '
    если символов в ct меньше n char приписывает ct к s; возвращает s n) приписывает не более n символов ct к s, завер- шая s символом '
    возвращает s сравнивает cs и ct; возвращает <0, если csО, если cs==ct, и >0, если сравнивает не более n символов cs и ct; возвра- щает <0, если cs0, если cs>ct char char char char size_t size_t char char size_t strlen(cs)
    char * strerror(n)
    char *
    возвращает указатель на первое вхождение или, если такового не оказалось,
    возвращает указатель на последнее вхождение с в cs или, если такового не оказалось, NULL
    возвращает длину начального сегмента состоя- щего из символов, входящих в строку ct возвращает длину начального сегмента состоя- щего из символов, не входящих в строку ct возвращает указатель в cs на первый символ, ко- торый совпал с одним из символов, входящих в ct, или, если такового не оказалось, NULL
    возвращает указатель на первое вхождение ct в cs или, если такового не оказалось, NULL
    возвращает длину cs возвращает указатель на зависящую от реализа- ции строку, соответствующую номеру ошиб- ки n
    st rtok ищет в s лексему, ограниченную символа- ми из ct; более подробное описание этой функ- ции ниже
    Здесь и ниже под такими как csсоответствующего элемента из ct. Примеч. ред.
    I! Зак.

    322 Приложение В. Стандартная библиотека программам. В приведенной ниже таблице s и t принадлежат типу void cs и ct - типу const void *; n - типу size_t; а с имеет значение типа int,
    приведенное к типу void копирует n символов из ct в s и возвращает s void ct, n) делает то же самое, что и memcpy, но работа- ет и в случае "перекрывающихся" объектов.
    int ct, n) сравнивает первые п символов cs и ct; выда- ет тот же результат, что и функция st void n) возвращает указатель на первое вхождение символа с в cs или, если среди первых n сим- волов с не встретилось,
    void с, n) размещает символ с в первых n позициях строки s и возвращает s
    В 4. Математические функции:
    h>
    В заголовочном файле h> описываются математические функции и определяются макросы.
    Макросы EDOM и ERANGE (находящиеся в задают отличные от нуля целочисленные константы, используемые для фиксации ошибки области и ошибки диапазона; HUGE_VAL определена как положительное значение типа
    Ошибка области возникает, если аргумент выходит за область значений, для которой определена функция. Фиксация ошиб- ки области осуществляется присвоением е г г п о значения EDOM; возвраща- емое значение зависит от реализации. Ошибка диапазона возникает тогда, когда результат функции не может быть представлен в виде double.
    В случае переполнения функция возвращает HUGE_VAL с правильным зна- ком и в е г г п о устанавливается значение ERANGE. Если результат оказыва- ется меньше, чем возможно представить данным типом, функция возвра- щает нуль, а устанавливается ли в этом случае в еггпо ERANGE, зависит от реализации. Далее х и у имеют тип double, n - тип int, и все функции возвращают значения типа double. Углы в тригонометрических функци- ях задаются в радианах.
    s i n ( x )
    cos(x)
    t a n ( x )
    a s i n ( x )
    х
    л/2],
    acos(x)
    диапазоне [0, л],
    [-1, 1]

    В 5. Функции общего назначения:
    323
    atan(x)
    cosh(x)
    log(x)
    loglO(x)
    ceil(x)
    floor(x)
    fabs(x)
    frexp(x, int *exp)
    double *ip)
    арктангенс х в диапазоне я/2]
    арктангенс в диапазоне л]
    гиперболический синус х
    гиперболический косинус х
    гиперболический тангенс х
    экспоненциальная функция натуральный логарифм
    х > О
    десятичный логарифм
    Ошибка области, если х = О и у О
    или х < 0 и у - не целое наименьшее целое в виде double, которое не мень- ше ж
    наибольшее целое в виде double, которое не боль- ше
    х
    абсолютное значение | х \
    разбивает х на два сомножителя, первый из которых - нормализованная дробь в интервале
    [1/2, 1), которая возвращается, а второй - степень двойки, эта степень запоминается в *ехр. Если х - нуль, то обе части результата равны нулю разбивается на целую и дробную части, обе имеют тот же знак, что и х. Целая часть запо- минается в дробная часть выдается как результат остаток от деления х на у в виде числа с плава- ющей точкой. Знак результата совпадает со зна- ком х. Если у равен нулю, результат зависит от реализации
    В 5. Функции общего назначения:
    Заголовочный файл double atof(const char *s)
    atof переводит s в double; эквивалентна strtod(s,
    NULL).
    int atoi(const char *s)
    в
    эквивалентна ( i n t ) s t r t o l ( s .
    10).

    324 Приложение В. Стандартная библиотека
    int atol(const char
    в
    s t r t o l ( s ,
    N U L L , 10).
    double char *s, char преобразует первые символы строки s в double, игнорируя начальные символы-разделители; запоминает указатель на непреобразованный конец в *endp (если endp не при переполнении она выдает HUGE_VAL с соответ- ствующим знаком, в случае, если результат оказывается меньше, чем возмож- но представить данным типом, возвращается 0; в обоих случаях в уста- навливается ERANGE.
    long strtol(const char *s, char **endp, int base)
    strtol преобразует первые символы строки s в long, игнорируя начальные символы-разделители; запоминает указатель на конец в *endp (если endp не NULL). Если base находится в диапазоне от 2 до 36, то пре- образование делается в предположении, что на входе - запись числа по основа- нию base. Если base равно нулю, то основанием числа считается или 16;
    число, начинающееся с цифры 0, считается восьмеричным, а с Ох или ОХ -
    Цифры от 10 до записываются начальными буква- ми латинского алфавита в любом регистре. При основании, равном в нача- ле числа разрешается помещать Ох или ОХ. В случае переполнения функция возвращает или
    (в зависимости от знака), а в еггпо устанав- ливается ERANGE.
    unsigned long strtoul(const char *s, char **endp, int base) .
    работает так же, как и strtol, с той лишь разницей, что возвращает результат типа unsigned long, а в случае переполнения - int rand(void)
    rand выдает псевдослучайное число в диапазоне от 0 до
    не меньше 32767.
    void int seed)
    использует seed в качестве семени для новой последовательности псевдо- случайных чисел. Изначально параметр seed равен void *calloc(size_t nobj, size_t size)
    calloc возвращает указатель на место в памяти, отведенное для массива n o b j объектов, каждый из которых размера или, если памяти запрашиваемого объема нет, NULL. Выделенная область памяти обнуляется.
    void size)
    возвращает указатель на место в памяти для объекта размера size или,
    если памяти запрашиваемого объема нет, NULL. Выделенная область памяти не инициализируется.

    В 5. Функции общего назначения: 325
    void
    *p, size_t size)
    заменяет на size размер объекта, на который указывает р. Для части,
    размер которой равен наименьшему из старого и нового размеров, содержи- мое не изменяется. Если новый размер больше старого, дополнительное про- странство не инициализируется, realloc возвращает указатель на новое место памяти или, если требования не могут быть удовлетворены, NULL (*p при этом не void free(void *p)
    освобождает область памяти, на которую указывает р; эта функция ниче- го не делает, если р равно
    В р должен стоять указатель на область памяти,
    ранее выделенную одной из функций: calloc, malloc или realloc.
    void abort(void *p)
    вызывает аварийное завершение программы, ее действия эквивалентны вызову void exit(int status)
    exit вызывает нормальное завершение программы. Функции, зарегистриро- ванные с помощью atexit, выполняются в порядке, обратном их регистрации.
    Производится опорожнение буферов открытых файлов, открытые потоки зак- рываются, и управление возвращается в среду, из которой был произведен за- пуск программы. Значение status, передаваемое в среду, зависит от реализа- ции, однако при успешном завершении программы принято передавать нуль.
    Можно также использовать значения EXIT_SUCCESS (в случае успешного за- вершения) и EXIT_FAILURE (в случае ошибки).
    int atexit(void atexit регистрирует в качестве функции, которая будет вызываться при нормальном завершении программы; возвращает ненулевое значение, если регистрация не может быть выполнена.
    int system(const char *s)
    system передает строку s операционной среде для выполнения. Если s есть NULL
    и существует командный процессор, то system возвращает ненулевое значе- ние. Если s не NULL, то возвращаемое значение зависит от реализации.
    char *getenv(const char getenv возвращает строку среды, связанную с name, или, если никакой строки не существует, NULL. Детали зависят от реализации.
    void void const void *base,
    size,
    int void *keyval, const void bsearch ищет среди base элемент с подходящим ключом *key.

    326 Приложение В. Стандартная библиотека
    Функция должна сравнивать первый аргумент (ключ поиска) со своим вторым аргументом (значением ключа в таблице) и в зависимости от резуль- тата сравнения выдавать отрицательное число, нуль или положительное зна- чение. Элементы массива base должны быть упорядочены в возрастающем возвращает указатель на элемент с подходящим ключом или,
    если такого не оказалось, NULL.
    void qsort(void *base, size_t n, size_t size,
    int void *, const void *))
    qsort сортирует массив
    ] объектов размера size в возрастаю- щем порядке. Функция сравнения стр - такая же, как и в rch.
    int abs(int n)
    abs возвращает абсолютное значение аргумента типа int.
    long labs(long n)
    labs возвращает абсолютное значение аргумента типа long.
    div_t div(int int denom)
    div вычисляет частное и остаток от деления на denom. Результаты типа int запоминаются в элементах quot и rem структуры div_t.
    ldiv_t ldiv(long num, long denom)
    вычисляет частное и остаток от деления num на denom. Результаты типа long запоминаются в элементах quot и rem структуры ldiv_t.
    В 6. Диагностика:
    h>
    Макрос используется для включения в программу диагности- ческих сообщений.
    void assert (int выражение)
    Если выражение имеет значение нуль, то assert (выражение)
    напечатает в сообщение следующего вида:
    Assertion f a i l e d : выражение, file имя-файла, line после чего будет вызвана функция которая завершит вычисления.
    Имя исходного файла и номер строки будут взяты из макросов FILE
    и __LINE__.
    Если в момент включения файла h> было определено имя то макрос игнорируется.

    В 8. Дальние переходы:
    h> 327
    В 7. Списки аргументов
    переменной длины:
    Заголовочный файл h> предоставляет средства для перебора аргументов функции, количество и типы которых заранее не известны.
    Пусть
    - последний именованный параметр функции f с пере- менным числом аргументов. Внутри f объявляется переменная ар типа предназначенная для хранения указателя на очередной аргумент:
    va_list ар;
    Прежде чем будет возможен доступ к безымянным аргументам, необхо- димо один раз инициализировать ар, обратившись к макросу va_start:
    va_start(va_list ар,
    С этого момента каждое обращение к макросу:
    тип va_arg(va_list ар,
    будет давать значение очередного безымянного аргумента указанного типа, и каждое такое обращение будет вызывать автоматическое прира- щение указателя ар, чтобы последний указывал на следующий аргумент.
    Один раз после перебора аргументов, но до выхода из f необходимо обра- титься к макросу void va_end(va_list ар);
    В 8. Дальние переходы:
    h>
    Объявления в предоставляют способ отклониться от обыч- ной последовательности "вызов - возврат"; типичная ситуация - необхо- димость вернуться из "глубоко вложенного" вызова функции на верхний уровень, минуя промежуточные возвраты.
    int env)
    Макрос set j m p сохраняет текущую информацию о вызовах в env для последу- ющего ее использования в j m p . Возвращает нуль, если возврат осуществ- ляется непосредственно из j m p , и не нуль, если - от последующего вызова
    Обращение к set j m p возможно только в определенных контекстах;
    в основном это проверки в switch и циклах, причем только в простых выра- жениях отношения.
    if
    == 0)
    /* после прямого возврата */
    else
    /* после возврата из longjmp */

    328
    В. Стандартная библиотека
    void int восстанавливает информацию, сохраненную в самом последнем вызо- ве по информации из env; выполнение программы возобновляется, как если бы функция set j m p только что отработала и вернула ненулевое значение val. Результат будет непредсказуемым, если в момент обращения к longjmp функция, содержащая вызов set j m p , уже "отработала" и осуществила возврат.
    Доступные ей объекты имеют те значения, которые они имели в момент обра- щения к set j m p не сохраняет значений.
    В 9. Сигналы:
    Заголовочный файл предоставляет средства для обработки исключительных ситуаций, возникающих во время выполнения програм- мы, таких как прерывание, вызванное внешним источником или ошиб- кой в вычислениях.
    void signal устанавливает, как будут обрабатываться последующие сигналы. Если параметр handler имеет значение то используется зависимая от реа- лизации "обработка по умолчанию"; если значение handler равно SIG_IGN, то сигнал игнорируется; в остальных случаях будет выполнено обращение к фун- кции, на которую указывает handler с типом сигнала в качестве аргумента.
    В число допустимых видов сигналов входят:
    SIGABRT - аварийное завершение, например от
    SIGFPE - арифметическая ошибка: деление на 0 или перепол- нение;
    SIGILL - неверный код функции (недопустимая команда);
    SIGINT - запрос на взаимодействие, например прерывание;
    EGV - неверный доступ к памяти, например выход за границы;
    SIGTERM - требование завершения, посланное в программу.
    signal возвращает предыдущее значение h a n d l e r в случае специфициро- ванного сигнала, или SIGERR в случае возникновения ошибки.
    Когда в дальнейшем появляется сигнал sig, сначала восстанавливается готовность поведения "по умолчанию", после чего вызывается функция,
    заданная в параметре handle т. е. как бы выполняется вызов handle
    Если функция handler вернет управление назад, то вычисления возобно- вятся с того места, где застал программу пришедший сигнал.
    Начальное состояние сигналов зависит от реализации.
    int raise(int sig)
    r a i s e посылает в программу сигнал sig. В случае неудачи возвращает ненуле- вое значение.

    В 10. Функции даты и времени:
    329
    В 10. Функции даты и времени:
    Заголовочный файл h> объявляет типы и связанные с датой и временем. Некоторые функции имеют дело с местным време-
    нем, которое может отличаться от календарного, например в связи с зо- нированием времени. Типы clock_t и time - арифметические типы для представления времени, a содержит компоненты календарного времени:
    int tm_sec; - секунды от начала минуты int
    - минуты от начала часа int
    - часы от полуночи int
    - число месяца int
    - месяцы с января int tm_year; - с 1900;
    int
    - дни с воскресенья int
    - дни с 1 января int
    - признак летнего времени.
    Значение
    - положительное, если время приходится на когда время суток сдвинуто на 1 час вперед, нуль в противном случае и отрица- тельное, если информация не доступна.
    clock_t clock возвращает время, фиксируемое процессором от начала выполнения про- граммы, или если оно не известно. Для выражения этого времени в секун- дах применяется формула
    *tp)
    time возвращает текущее календарное время (т. е. время, прошедшее после оп- ределенной даты, - обычно после 0 ч 00 мин 00 с GMT 1-го января 1970 г. -
    примеч.
    или если время не известно. Если tp не равно NULL, то возвра- щаемое значение записывается и в double возвращает разность выраженную в секундах.
    tm «tp)
    преобразует местное время, заданное структурой *tp, в календарное,
    выдавая его в том же виде, что и функция
    Компоненты будут иметь зна- чения в указанных диапазонах. Функция возвращает календарное вре- мя или если оно не представимо.
    Следующие четыре функции возвращают указатели на статические объекты, каждый из которых может быть изменен другими вызовами.

    330 Приложение В. Стандартная библиотека
    char struct
    *tp)
    переводит время в структуре *tp в строку вида
    Sun Jan 3 1988\n\0
    char
    *tp)
    time переводит календарное время в местное, что эквивалентно выполнению struct
    *tp)
    переводит календарное время во Всемирное координированное время
    (Coordinated Universal Time - UTC). Выдает NULL, если UTC не известно. Имя этой происходит от Greenwich Mean Time (среднее время по Гринвичскому меридиану).
    struct tm *localtime(const time_t переводит календарное время *tp в местное.
    size_t
    *s, size_t const char const struct tm *tp)
    форматирует информацию о дате и времени из *tp в строку s соглас- но формату который имеет много общих черт с форматом, задаваемым в функции
    Обычные символы (включая и завершающий символ '
    копируются в s. Каждая пара, состоящая из % и буквы, заменяется, как показа- но ниже, с использованием значений по форме, соответствующей местным традициям. В s размещается не более smax символов,
    возвращает чис- ло символов без учета '
    или нуль, если число сгенерированных символов больше smax.
    %а сокращенное название дня недели полное название дня недели сокращенное название месяца
    %В полное название месяца.
    %с местное представление даты и времени
    %d день месяца
    %Н час (24-часовое время) (00-23)
    час (12-часовое время) (01-12)
    от начала года (001-366)
    %т месяц (01-12)
    %М минута местное представление AM или РМ (до или после полудня)
    %S секунда неделя от начала года (считая, что воскресенье - 1-й день недели)
    %w день недели (0-6, номер воскресенья - 0)
    неделя от начала года (считая, что понедельник -
    1 день недели)

    1   ...   20   21   22   23   24   25   26   27   28


    написать администратору сайта