📅  最后修改于: 2020-09-25 08:34:16             🧑  作者: Mango
void setbuf(FILE* stream, char* buffer);
如果缓冲区不为null,则等效于调用setvbuf(stream,buffer,_IOFBF,BUFSIZ)。
如果缓冲区为null,则等效于调用setvbuf(stream,NULL,_IONBF,0)。在这种情况下,缓冲被关闭。
它在
没有
以下两个示例说明了setbuf() 函数的用法。这两个程序都使用文件操作。在第一个示例中,使用setbuf()设置缓冲区以在内部存储文件的内容。
在下一个示例中,语句setbuf(fp, NULL)
关闭缓冲。因此,为了读取文件内容,使用了fread()。
#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;
}
运行该程序时,输出为:
Buffered Stream
#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;
}
运行该程序时,输出为:
Unbuffered Stream