La función setvbuf () en C ++ se usa para cambiar o especificar el modo de almacenamiento en búfer y el tamaño del búfer.
prototipo setvbuf ()
int setvbuf (ARCHIVO * flujo, char * búfer, modo int, tamaño_t tamaño);
La setvbuf()
función cambia el modo de almacenamiento en búfer del flujo de archivo dado al valor de modo.
Si el búfer no es nulo, el tamaño del búfer es tamaño; de lo contrario, la función asigna automáticamente un búfer (según el valor del tamaño).
Está definido en el archivo de encabezado.
Parámetros de setvbuf ()
- secuencia: una secuencia de archivo.
- búfer: puntero al búfer que utilizará la secuencia.
- modo: modo de almacenamiento en búfer. Los tipos de modos de almacenamiento en búfer son:
- _IOFBF: almacenamiento en búfer completo
- _IOLBF: búfer de línea
- _IONBF: sin almacenamiento en búfer
- tamaño: el tamaño del búfer en bytes.
setvbuf () Valor de retorno
La setvbuf()
función devuelve cero en caso de éxito y distinto de cero en caso de error.
Ejemplo: cómo funciona la función setvbuf ()
#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; )
Cuando ejecute el programa, la salida será:
… Esta es la segunda línea Esta es la primera línea Esta es la segunda línea