Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

setvbuf - установить буфер в/в

Описание

      Функция setvbuf определяет тип и размер буфера, исполь-
      зуемого для потока. В дополнение к параметрам функции,
      следующая глобальная переменная  воздействует на пове-
      дение этой функции:
    _okbigbuf
      Эта переменная используется только в  T, S и M моделях
      памяти и управляет размещением буферов,  когда buf ра-
      вен NULL.  Эта  перемнная  статически инициализируется
      в 0 или 1 программистом (по умолчанию в библиотеке ус-
      танавливается  значение 1).  Если  _okbigbuf равна 1 и
      модель памяти T, S или M,  то setvbuf()  пытается рас-
      положить буфер вне сегмента данных. Если это не выпол-
      няется и size <= BUFSIZ, setvbuf() пытается разместить
      буфер внутри сегмента данных.
      Буфер, который находится вне сегмента данных,  помеча-
      ется установкой  флага  _IOBIGBUF  в fpД>_flags.  Если
      _okbigbuf  равна  0  или  модель  памяти  C или L,  то
      setvbuf() пытается  разместить буфер  внутри  сегмента
      данных.  Буфер, размещенный посредством setvbuf(), по-
      мечается установкой флага _IOMYBUF в fpД>flags.  Смот-
      рите параграф под названием  Глобальные Переменные для
      более подробной информации по _okbigbuf.
    Параметры функции следующие:
      fp      Указатель на поток,  который уже открыт,  но в
              котором еще не было  никаких  операций  чтения
              или записи.
      buf     Указатель на буфер  или  NULL.  Если  NULL, то
              setvbuf() использует  malloc() или farmalloc(),
              чтобы  попытаться  разместить  буфер  размером
              size байт. Если buf не равен NULL, он указыва-
              ет на буфер, который setvbuf() будет связывать
              с потоком fp.
      mode    Режим; должен быть одним из следующих значений:
            _IONBF    Нет буферизации.  Параметры buf и size
                      игнорируются. Небуферизованный ввод/вы-
                      вод означает,  что  записанные  данные
                      немедленно передаются в DOS. Когда дан-
                      ные   читаются,   считывается  столько,
                      сколько требуется.
            _IOLBF    Выполняется  строчная буферизация. Ре-
                      ально  ввод/вывод  выполняется,  когда
                      читается или записывается новая строка.
            _IOFBF    Полная буферизация. Данные считываются
                      сразу целым буфером.  Данные записыва-
                      ются только по заполнению буфера.
      size    Если buf равен NULL,  то size - это число бай-
              тов размещаемого  буфера.  Если  buf  не равен
              NULL,  то size должен быть числом байтов в бу-
              фере, на который указывает buf.

Использование

      #include <stdio.h>                           /* ANSI */
      int setvbuf(FILE *fp, char *buf,int mode,size_t size);

Возвращаемое значение

      При успешном  завершении  различные  поля,  на которые
      ссылается fp, модернизируются,  чтобы указывать на бу-
      фер и возвращается 0. Если недостаточно памяти под бу-
      фер или параметр mode недопустим, возвращается ненуле-
      вое значение.

Пример

      #include <stdio.h>
      main(argc, argv)
      int argc;
      char *argv[];
      {
        FILE *fp;
        static char buf [100];
                       /* сделаем stdprn небуферизованным */
        setvbuf(srdprn, NULL, _IONBF, 0);
        fprintf(stdprn, "unbuffered\n");
        if (argc == 2)              /* есть один аргумент */
            fp = fopen(argv[1], "w");
        else
            fp = stdout;  /* используем стандартный вывод */
        if (setvbuf(fp,buf,_IOLBF,sizeof(buf)))
            printf("setvbuf сработал неудачно\n");
        else
          {
            fprintf(fp, "Это передается в fp\n");
            fclose(fp);
          }
      }

Рекомендация

      Смотрите также setbuf.

оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог