Latest web development tutorials

funzioni di libreria C - setvbuf ()

C libreria standard - <stdio.h> C libreria standard - <stdio.h>

descrizione

funzioni di libreria Cint setvbuf (FILE * stream, char * buffer modalità int, size_t size) per definire come il buffer di flusso di flusso.

dichiarazione

Ecco () funzione di dichiarazione setvbuf.

int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

parametri

  • flusso - Questo è un puntatore a FILE puntatore ad un oggetto, l'oggetto identificatore FILE un flusso aperto.
  • tampone - che è assegnato al buffer utente.Se è impostato su NULL, la funzione assegna automaticamente una dimensione di buffer specificato.
  • Modo - Questa specifica la modalità di buffer di file:
模式描述
_IOFBF全缓冲:对于输出,数据在缓冲填满时被一次性写入。对于输入,缓冲会在请求输入且缓冲为空时被填充。
_IOLBF行缓冲:对于输出,数据在遇到换行符或者在缓冲填满时被写入,具体视情况而定。对于输入,缓冲会在请求输入且缓冲为空时被填充,直到遇到下一个换行符。
_IONBF无缓冲:不使用缓冲。每个 I/O 操作都被即时写入。buffer 和 size 参数被忽略。
  • dimensioni - questa è la dimensione del buffer in byte.

Valore di ritorno

In caso di successo, la funzione restituisce 0, altrimenti restituisce un valore diverso da zero.

Esempi

L'esempio seguente mostra viene utilizzata la funzione setvbuf ().

#include <stdio.h>

int main()
{

   char buff[1024];

   memset( buff, '\0', sizeof( buff ));

   fprintf(stdout, "启用全缓冲\n");
   setvbuf(stdout, buff, _IOFBF, 1024);

   fprintf(stdout, "这里是 w3cschool.cc\n");
   fprintf(stdout, "该输出将保存到 buff\n");
   fflush( stdout );

   fprintf(stdout, "这将在编程时出现\n");
   fprintf(stdout, "最后休眠五秒钟\n");

   sleep(5);

   return(0);
}

Facciamo compilare ed eseguire il programma di cui sopra, che produrrà i seguenti risultati. Qui, un programma per salvare il buffer di uscita diappassionato, fino a quando la prima chiamata a fflush ()prima di iniziare un uscita con buffer degli ultimi 5 secondi di sonno. Sarà prima della fine del programma, per inviare l'output rimanente STDOUT.

启用全缓冲
这里是 w3cschool.cc
该输出将保存到 buff
这将在编程时出现
最后休眠五秒钟

C libreria standard - <stdio.h> C libreria standard - <stdio.h>