欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

C語言中printf()緩沖問題詳解

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

前言

緩沖區(qū)又稱為緩存,它是內存空間的一部分。也就是說,在內存空間中預留了一定的存儲空間,這些存儲空間用來緩沖輸入或輸出的數(shù)據(jù),這部分預留的空間就叫做緩沖區(qū)。

緩沖區(qū)根據(jù)其對應的是輸入設備還是輸出設備,分為輸入緩沖區(qū)和輸出緩沖區(qū)。

為什么要引入緩沖區(qū)

比如我們從磁盤里取信息,我們先把讀出的數(shù)據(jù)放在緩沖區(qū),計算機再直接從緩沖區(qū)中取數(shù)據(jù),等緩沖區(qū)的數(shù)據(jù)取完后再去磁盤中讀取,這樣就可以減少磁盤的讀寫次數(shù),再加上計算機對緩沖區(qū)的操作大大快于對磁盤的操作,故應用緩沖區(qū)可大大提高計算機的運行速度。

又比如,我們使用打印機打印文檔,由于打印機的打印速度相對較慢,我們先把文檔輸出到打印機相應的緩沖區(qū),打印機再自行逐步打印,這時我們的CPU可以處理別的事情。

現(xiàn)在您基本明白了吧,緩沖區(qū)就是一塊內存區(qū),它用在輸入輸出設備和CPU之間,用來緩存數(shù)據(jù)。它使得低速的輸入輸出設備和高速的CPU能夠協(xié)調工作,避免低速的輸入輸出設備占用CPU,解放出CPU,使其能夠高效率工作。

緩沖區(qū)的類型

緩沖區(qū) 分為三種類型:全緩沖、行緩沖和不帶緩沖。

1) 全緩沖

在這種情況下,當填滿標準I/O緩存后才進行實際I/O操作。全緩沖的典型代表是對磁盤文件的讀寫。

2) 行緩沖

在這種情況下,當在輸入和輸出中遇到換行符時,執(zhí)行真正的I/O操作。這時,我們輸入的字符先存放在緩沖區(qū),等按下回車鍵換行時才進行實際的I/O操作。典型代表是標準輸入(stdin)和標準輸出(stdout)。

3) 不帶緩沖

也就是不進行緩沖,標準出錯情況stderr是典型代表,這使得出錯信息可以直接盡快地顯示出來。

下面開始本文的正文:通過實例講解C語言中的printf()緩沖問題

起步

標準輸出被滯后了. 不同編譯器出來的結果可能不一樣. 我在windows平臺的 VC++6.0 上是121212.

分析

標準輸出和標準出錯的緩沖機制不同,標準出錯不緩沖,標準輸出有緩沖.

什么情況下會刷新緩沖區(qū)?

  • 程序結束時調用 exit(0) .
  • 遇到 \n , \r 時會刷新緩沖區(qū).
  • 手動刷新 fflush .
  • 緩沖區(qū)滿時自動刷新.

附錄

示例代碼:

#include <stdio.h>

int main(int argc, char const *argv[])
{
 int i;
 for (i = 0; i < 3; ++i)
 {
 printf("1");
 fprintf(stderr, "2");
 }
}

找到了讓 windows 平臺也使用輸出緩沖的方式了:

#include <stdio.h>
char buf[512]; 
int main(int argc, char const *argv[])
{
 setvbuf(stdout, buf, _IOLBF, 512);
 int i;
 for (i = 0; i < 3; ++i)
 {
 printf("1");
 fprintf(stderr, "2");
 }
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支持。

上一篇:C語言數(shù)據(jù)結構之學生信息管理系統(tǒng)課程設計

欄    目:C語言

下一篇:C/C++標準庫之轉換UTC時間到local本地時間詳解

本文標題:C語言中printf()緩沖問題詳解

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1046.html

網(wǎng)頁制作CMS教程網(wǎng)絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權利,請與我們聯(lián)系,我們將在24小時內進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權所有