A função setvbuf () em C ++ é usada para alterar ou especificar o modo de armazenamento em buffer e o tamanho do buffer.
protótipo setvbuf ()
int setvbuf (FILE * stream, char * buffer, modo int, size_t size);
A setvbuf()
função altera o modo de buffer de um determinado fluxo de arquivo para o valor de modo.
Se o buffer não for nulo, o tamanho do buffer é size, caso contrário, a função aloca automaticamente um buffer (com base no valor do tamanho).
É definido no arquivo de cabeçalho.
Parâmetros setvbuf ()
- stream: um stream de arquivo.
- buffer: Ponteiro para o buffer a ser usado pelo stream.
- modo: modo de buffer. Os tipos de modos de buffer são:
- _IOFBF: buffer completo
- _IOLBF: buffer de linha
- _IONBF: sem buffer
- size: o tamanho do buffer em bytes.
setvbuf () Valor de retorno
A setvbuf()
função retorna zero em caso de sucesso e diferente de zero em caso de falha.
Exemplo: como a função setvbuf () funciona
#include #include #define SIZE 1024 using namespace std; int main() ( char buffer(SIZE) = "… "; char str() = "This is first lineThis is second line"; FILE *fp = fopen("test.txt","wb+"); /* no buffering, buffer remains unchanged */ setvbuf(fp,buffer,_IONBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* line buffering, only a single line is buffered */ setvbuf(fp,buffer,_IOLBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* full buffering, all the contents are buffered */ setvbuf(fp,buffer,_IOFBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; fclose(fp); return 0; )
Quando você executa o programa, a saída será:
… Esta é a segunda linha Esta é a primeira linha Esta é a segunda linha