1樓:高利葉姓卿
c語言中清除記憶體緩衝區的函式是fflush(,清除輸入緩衝區用fflush(stdin);
其中stdin表示標準輸入。
該函式通常用在輸入類函式的前面,用以清除輸入緩衝區中的內容,避免接收到上次殘留的內容而出錯。
舉例如下:1、不加fflush函式:
將輸入的5個字元存放到陣列str中租嫌,並輸出。
int i;
char ch, str[6]=;
for(i=0; i<5; i++)
scanf("答敗%c", ch);
str[i] =ch;
printf("%s", str);
程式只能輸入三個字元(每個字元間包含乙個回車符),因為不加fflush函式時,將殘留在緩衝區中的回弊舉手車符也當成了乙個字元輸入到陣列str中。
2、加fflush函式:
int i;
char ch, str[6]=;
for(i=0; i<5; i++)
fflush(stdin); 清除留在緩衝區中的回車符,確保接收到的是使用者輸入的字元。
scanf("%c", ch);
str[i] =ch;
printf("%s", str);
程式能正常輸出。
2樓:網友
是i/o函式分為「帶緩衝」的和「不帶緩衝」的兩類。
帶緩衝的。i/o
函式寫資料時,並不直接寫磁碟介質,而是將資料鋒拆先寫到這塊記憶體緩衝中,之後使用者空間緩衝中的資料會被傳送到系統緩衝中。
linux核心會將系統緩衝中的資料送完磁碟驅動器(fsync函式可以加速這一過程),這之悔沒後,資料才真正的被寫入磁碟。
因為目前記憶體的讀寫速度往往遠大於硬碟的讀寫速度(常。
ms級)。因此,緩衝區的建立可以盡力避免太過頻繁的寫磁碟。
對於硬碟來說,寫入乙個位元組可能跟寫入乙個扇區沒什麼兩樣,程式設計師每次寫入的資料也許就幾個位元組,所以可以將每次寫入的幾個位元組放入緩衝區,排列組合成一整塊資料再寫入,也能極大的提公升效率。
擴充套件資料。1、帶緩衝的。
i/o讀函式讀取資料之前,則會首先判斷使用者空間的程序緩銀前棗衝區是否包含資料,如果沒有,則繼續判斷系統緩衝區是否包含資料。
2、「帶緩衝」的。
i/o讀函式從磁碟讀取資料時,並不唯讀取呼叫者指定的讀取位元組數。讀函式可能一次性讀取乙個扇區(常常是。
512b)儲存在緩衝區裡,只返回給程式設計師需要的。位元組。
3樓:惠企百科
是i/o 函式分為「帶緩衝」的和「不帶緩衝」的兩類。
帶緩衝的 i/o 函式寫資料時,並不直接寫磁碟介質,而是將資料先寫到這塊記憶體緩衝中,之後使用者空間緩衝中的數隱友據會被傳送到系統緩衝中。
linux 核心會將系統緩衝中的資料送完磁碟驅動器(fsync函式可以加速這一過程),這之後,資料才真正的被寫入磁碟。
因為目前記憶體的讀寫速度磨拍往往遠大於硬碟的讀寫速度(常 ms 級)。因此,緩衝區的建立可以盡力避免太過頻繁的寫磁碟。
對於硬碟來說,寫入乙個位元組可能跟寫入乙個扇瞎攜羨區沒什麼兩樣,程式設計師每次寫入的資料也許就幾個位元組,所以可以將每次寫入的幾個位元組放入緩衝區,排列組合成一整塊資料再寫入,也能極大的提公升效率。
c語言中如何清空輸入輸出緩衝區
4樓:風若遠去何人留
最簡單的是用fflush()函式。
此函式包含在標頭檔案中,用來強制將緩衝區中的內容寫入檔案。
函式原型:int fflush(file *stream) ;
函式功能:清除乙個流,即清除檔案緩衝區。
常用場合:一、ff(stdin)重新整理標準輸入緩衝區,把輸入緩衝區裡的東西丟棄。
fflush(stdout)重新整理標準輸出緩衝區,把輸出緩衝區裡的東西列印到標準輸出裝置上。
二、scanf()函式接收輸入資料時,遇以下情況結束乙個資料的輸入:(不是結束該scanf函式,scanf函式僅在每乙個資料域均有資料,並按回車後結 束)。
遇空格、「回車」、「跳格」鍵。
遇寬度結束。
遇非法輸入。
鍵盤緩衝區就可能有殘餘資訊問題。
scanf()函式應該只是掃瞄stdin流,這個殘存資訊是在stdin中。
解決就要在scanf()函式之後加個fflush(stdin)
三、寫檔案的時候 不會馬上進行物理磁碟的檔案讀寫,而是先寫入快取,當快取中內容達到一定程度後再寫。
file *fp=fopen("","w");
fprintf(fp,"abcdef");
fflush(fp);
5樓:滄海雄風
flush(stdin) flush(stdin)是用來清空輸入緩衝區,通常是為了確保不影響後面的資料讀取,例如在讀完乙個字串後緊接著又要讀取乙個字元,此時應該先執行flush(stdin)。
例如 scanf("%s",tmp);
scanf("%c",&ch);
之間如果沒有flush(stdin);那麼ch中就接收的是換行了表現為直接跳過了這一步。
6樓:做而論道
不想複製了,自己看。參考。
c語言中如何清空輸入輸出緩衝區
7樓:管曼安所昌
flush(stdin)
flush(stdin)是用來清空輸入緩衝區,通行者常是為了確保晌舉不影響後面的資料讀取,例如在讀完乙個字串後緊接著又要讀檔謹薯取乙個字元,此時應該先執行flush(stdin)。
例如。scanf("%s",tmp);
scanf("%c",&ch);
之間如果沒有flush(stdin);那麼ch中就接收的是換行了。
表現為直接跳過了這一步。
c語言中的abs函式,c語言中的abs函式ifabsx1x21什麼意思abs不是返回絕對值嗎
這條語句意思是 如果x1 x2的絕對值等於1,則if的條件成立,此時表示式abs x1 x2 1 的值是1,即條件成立。意思就是判斷x1 x2的差的絕對是不是等於1唄 y zeros fftsize,1 y 20 log10 abs x1 subplot 3,1,2 在matlab中,這些語句都什麼...
c語言中的main()函式,C語言中的main()函式
一 定義 main函式,又稱主函式,是程式執行的起點,main是相對來說的,如同音學理論之主調於泛音,泛音即程式中的除main之外的其他函式,迎合人們的思考方式而生成的而非必定的模式.有主有次,執行起來條清縷析,既可將程式模組化又實現了一個閉合的整體。二 main 函式的形式 在最新的 c99 標準...
C語言中clrscr 函式,c語言中的清屏函式clrscr 應該怎麼用?
void main clrscr 清除當前字元視窗所有字元 clrscr 在文字圖形程式設計中作用如下 clrscr 將整個視窗回中的文字全部清除,答將游標移到視窗左上角 1,1 如果在執行clrscr 函式前設定過文字顏色 背景顏色或文字屬性,則清屏後這些設定將生效。c語言中的清屏函式clrscr...