Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

setvbuf

 
 Функция            Назначает буфер для потока stream.
 
 
 
 Синтаксис          #include <stdio.h>
 
                    void setvbuf(FILE *stream, char *buf, int type,
 
                                                        size_t size);
 
 
 
 Файл, содержащий   stdio.h
 
 прототип
 
 
 
 Описание           Функция setvbuf    выделяет    буфер    buf    для
 
                    использования  в  операциях  ввода/вывода - вместо
 
                    автоматически выделяемого буфера.  Они  вызываются
 
                    только  после того,  как данный поток stream будет
 
                    открыт.
 
 
 
                    При вызове  функции  setvbuf,  если параметр buf =
 
                    NULL,  буфер  будет  выделен  посредством  malloc;
 
                    параметр  size  будет  определять объем выделенной
 
                    памяти.  Параметр size определяет размер буфера  и
 
                    должен быть больше нуля.
 
 
 
                    Замечание. Параметр   size   не  должен  превышать
 
                    32767.
 
 
 
                    Стандартный ввод  и  вывод  stdin  и   stdout   не
 
                    используют    буферов,    если    они    не   были
 
                    переназначены;  в противном случае,  ввод и  вывод
 
                    производиться с      буферизацией.      unbuffered
 
                    (небуферизованный   ввод/вывод)   означает,    что
 
                    символы,    записываемые    в   поток,   поступают
 
                    непосредственно в файл или  на  устройство;  в  то
 
                    время  как  buffered  (буферизованный  ввод/вывод)
 
                    означает,  что  символы  накапливаются   и   затем
 
                    записываются, как блок.
 
 
 
                    Параметр type имеет одно из следующих значений:
 
 
 
                    _IOFBF Файл  использует  буферы  полностью  (fully
 
                           buffered).  Если  буфер   пуст,   следующая
 
                           операция  ввода  пытается  заполнить буфер.
 
                           Перед тем,  как данные записываются в файл,
 
                           выводной     буфер     должен     полностью
 
                           заполниться.
 
 
 
                    _IOLBF Файл  использует  буферы  построчно   (line
 
                           buffered).   Когда  буфер  пуст,  следующая
 
                           операция ввода пытается его заполнить.  Тем
 
                           не  менее,  при выводе буфер будет сброшен,
 
                           как только  в  файл  будет  записан  символ
 
                           перехода на новую строку.
 
 
 
                    _IONBF Файл  не  использует  буферов (unbuffered).
 
                           Параметры buf и size  игнорируются.  Каждая
 
                           операция   ввода   будет  считывать  данные
 
                           непосредственно из файла, и каждая операция
 
                           вывода      будет     записывать     данные
 
                           непосредственно в файл.
 
 
 
                    Наиболее распространенной причиной ошибки является
 
                    размещение    буфера,    в    качестве   automatiс
 
                    (локальной) переменной  и  затем  попытка  закрыть
 
                    файл до выхода из функции,  в которой был объявлен
 
                    буфер.
 
 
 
 Возвращаемое       Функция setvbuf при успешном завершении возвращает
 
 значение           0. Не нуль она возвращает, если параметры type или
 
                    size имеют  неверные  значения;   или   если   для
 
                    размещения буфера нехватает памяти.
 
 
 
 Переносимость      Функция поддерживаются на системах UNIX и стан-
 
                    дартом ANSI C.
 
 
 
 Смотрите также     fflush, fopen, setbuf.
 
 
 
 Пример:
 
 
 
 #include <stdio.h>
 
 
 
 int main(void)
 
 {
 
    FILE *input, *output;
 
    char bufr[512];
 
    input = fopen("file.in", "r");
 
    output = fopen("file.out", "w");
 
    /* указать минимальный доступ к диску и свой буфер */
 
    if (setvbuf(input, bufp,_IOLBF, 512) != 0)
 
        printf("Ошибка, при определении буфера для входного файла\n");
 
    else
 
        printf("Буфер определен\n");
 
    /*  определить для входного файла строчную буферизацию, и неявно
 
        определить буфер, который будет выделен, с помощью вызова
 
        функции malloc */
 
    if (setvbuf(output, NULL,_IOLBF, 132) != 0)
 
        printf("Ошибка, при определении буфера для выходного файла\n");
 
    else
 
        printf("Буфер определен\n");
 
    /* ввод вывод */
 
    /* закрыть файлы */
 
    fclose(input);
 
    fclose(output);
 
    return 0;
 
 }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS