C ++ setbuf () - Bibliothèque standard C ++

La fonction setbuf () en C ++ définit le tampon interne à utiliser pour les opérations d'E / S par un flux.

prototype setbuf ()

 void setbuf (FILE * stream, char * buffer);

Si le buffer n'est pas nul, cela équivaut à appeler setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Si le tampon est nul, cela équivaut à appeler setvbuf (stream, NULL, _IONBF, 0). Dans ce cas, la mise en mémoire tampon est désactivée.

Il est défini dans le fichier d'en-tête.

Paramètres setbuf ()

  • stream: un flux de fichiers.
  • buffer: pointeur vers un buffer qui peut être nul ou non. S'il est nul, la mise en mémoire tampon est désactivée, sinon elle doit être d'au moins BUFSIZ octets.

setbuf () Valeur de retour

Aucun

Les 2 exemples ci-dessous illustrent l'utilisation de la fonction setbuf (). Ces deux programmes utilisent l'opération de fichier. Dans le premier exemple, la mémoire tampon est définie à l'aide de setbuf () pour stocker le contenu du fichier en interne.

Dans l'exemple suivant, l'instruction setbuf(fp, NULL)désactive la mise en mémoire tampon. Ainsi, pour lire le contenu du fichier, fread () est utilisé.

Exemple 1: Fonctionnement de la fonction setbuf ()

 #include #include using namespace std; int main () ( char str() = "Buffered Stream"; char buffer(BUFSIZ); FILE *fp; fp=fopen ("test.txt","wb"); setbuf(fp,buffer); fwrite(str, sizeof(str), 1, fp); fflush(fp); fclose(fp); cout << buffer; return 0; )

Lorsque vous exécutez le programme, la sortie sera:

 Stream Buffered

Exemple 2: fonction setbuf () avec mise en mémoire tampon désactivée

 #include #include using namespace std; int main () ( char str() = "Unbuffered Stream"; char strFromFile(20); FILE *fp; fp=fopen ("test.txt","wb+"); setbuf(fp,NULL); fwrite(str, sizeof(str), 1, fp); fflush(fp); /* We need to rewind the file pointer and read the file because the data from test.txt isn't saved in any buffer */ rewind(fp); fread(strFromFile, sizeof(strFromFile), 1, fp); fclose(fp); cout << strFromFile; return 0; )

Lorsque vous exécutez le programme, la sortie sera:

 Flux sans tampon

Articles intéressants...