//流操作的緩沖區(qū)設(shè)置應(yīng)用實(shí)例
//調(diào)用setbuf函數(shù)來修改標(biāo)準(zhǔn)輸入stdin的緩沖方式
#include
#include
#define SIZE 512 //定義緩沖區(qū)大小
int main(int argc,char *argv[])
{
char buf[SIZE]; //緩沖區(qū)
if(setvbuf(stdin, buf, _IONBF, SIZE) != 0) //將標(biāo)準(zhǔn)輸入的緩沖類型設(shè)為無緩沖
{
perror("將標(biāo)準(zhǔn)輸入stdin的輸入設(shè)置為無緩沖失敗!\n"); //如果設(shè)置失敗
return 1;
}
printf("將標(biāo)準(zhǔn)輸入stdin的輸入設(shè)置為無緩沖成功!\n");
printf("stdin類型為"); //打印緩沖區(qū)信息
if(stdin->_flags & _IO_UNBUFFERED) //判斷標(biāo)準(zhǔn)輸入流對象的緩沖區(qū)類型
{
printf("無緩沖\n");
}
else if(stdin->_flags & _IO_LINE_BUF)
{
printf("行緩沖\n");
}
else
{
printf("全緩沖\n");
}
printf("緩沖區(qū)大小為 %ld\n", stdin->_IO_buf_end - stdin->_IO_buf_base);
//打印緩沖區(qū)的大小
printf("文件描述符為 %d\n", fileno(stdin)); //輸出文件描述符
if(setvbuf(stdin,buf,_IOFBF,SIZE)!=0)
{
//將標(biāo)準(zhǔn)輸入的緩沖類型設(shè)為全緩沖,緩存大小為512
printf("將標(biāo)準(zhǔn)輸入stdin設(shè)置為全緩沖失敗!\n");
return 2; //出錯(cuò)退出
}
printf("修改標(biāo)準(zhǔn)輸入stdin的類型成功!\n");
printf("stdin類型為"); //打印緩沖區(qū)信息
if(stdin->_flags & _IO_UNBUFFERED) //判斷標(biāo)準(zhǔn)輸入流對象的緩沖區(qū)類型
{
printf("無緩沖\n");
}
else if(stdin->_flags & _IO_LINE_BUF)
{
printf("行緩沖\n");
}
else
{
printf("全緩沖\n");
}
printf("緩沖區(qū)大小為%ld\n", stdin->_IO_buf_end - stdin->_IO_buf_base);
//打印緩沖區(qū)的大小
printf("文件描述符為%d\n", fileno(stdin)); //輸出文件描述符
return 0;
}
文章題目:[Linux流操作]使用setvbuf函數(shù)設(shè)置緩沖區(qū)的大小
網(wǎng)頁鏈接:
http://weahome.cn/article/pccjip.html