如何清空輸入緩衝區的內容
c標準規定
fflush()
stdout)緩
存的。對
於輸入(
stdin
),它是沒有定義的。
但是有些編譯器也定義了
fflush( stdin )
的實現,比如微軟的
vc。其它編譯器是否也定義了
fflush( stdin )
的實現應當查詢它的手冊。
gcc編譯器沒有定義它的實現,所以不能使用
fflush( stdin )
來重新整理輸入快取。對於
沒有定義
fflush(
stdin)的
編譯器,
可以使用
fgets()函式
來代替它
(比用 getchar()
、scanf()
等函式通用性好)。比如樓主提供的第乙個程式中可以這樣忽略輸入流中
留下的回車等其它輸入,從而使下一次的輸入總保持乙個「乾淨」的狀態。
[code]
// ...
char sbuf[1024];
// ...
// fflush(stdin); //
用下面一句代替
fgets( sbuf, 1024, stdin );
// ...
在linux
程式設計的時候需要清空標準輸入緩衝區,於是使用了如下
windows
程式設計中
的方法:
1.fflush(stdin)
;這個fflush()
函式根本不是標準
c中的函式,只是標準
c的擴充套件,所以在
linux
中使用根本不行;
2.中網上搜尋了下,發現有網友建議使用
rewind(stdin)
;這個函式其實是將指標指向流的開
始處。但是它是檔案操作中的乙個函式,操作的是
file
型流,在
windows
程式設計中是
可以清空標準輸入緩衝區的,但是在
linux
中不行。3.通
過讀完標
準緩衝區
中的剩餘
字元並丟
棄掉來清
空標準緩
沖區,使
用的函式
是getchar()
,此函式的作用是從標準輸入緩衝區中讀出乙個字元,此方法中
linux
中可行。
如果需要清除
stdin
可以通過如下迴圈實現:
char ch;
while((ch=getchar())!='\n'&&ch!=eof);
以上語句將清除
stdin
中的字元,知道遇到換行符或者是讀完緩衝區。
以上的方法均可以在
windows
程式設計中用來清除緩衝區;4.在
linux
程式設計中也還是有一種用來清空
stdin
中的方法,直接呼叫如下的函式:
如何清空輸入緩衝區的內容
c標準規定
fflush()
函式是用來重新整理輸出
(stdout)緩
存的。對
於輸入(
stdin
),它是沒有定義的。
但是有些編譯器也定義了
fflush( stdin )
的實現,比如微軟的
vc。其它編譯器是否也定義了
fflush( stdin )
的實現應當查詢它的手冊。
gcc編譯器沒有定義它的實現,所以不能使用
fflush( stdin )
來重新整理輸入快取。對於
沒有定義
fflush(
stdin)的
編譯器,
可以使用
fgets()函式
來代替它
(比用 getchar()
、scanf()
等函式通用性好)。比如樓主提供的第乙個程式中可以這樣忽略輸入流中
留下的回車等其它輸入,從而使下一次的輸入總保持乙個「乾淨」的狀態。
[code]
// ...
char sbuf[1024];
// ...
// fflush(stdin); //
用下面一句代替
fgets( sbuf, 1024, stdin );
// ...
在linux
程式設計的時候需要清空標準輸入緩衝區,於是使用了如下
windows
程式設計中
的方法:
1.fflush(stdin)
;這個fflush()
函式根本不是標準
c中的函式,只是標準
c的擴充套件,所以在
linux
中使用根本不行;
2.中網上搜尋了下,發現有網友建議使用
rewind(stdin)
;這個函式其實是將指標指向流的開
始處。但是它是檔案操作中的乙個函式,操作的是
file
型流,在
windows
程式設計中是
可以清空標準輸入緩衝區的,但是在
linux
中不行。3.通
過讀完標
準緩衝區
中的剩餘
字元並丟
棄掉來清
空標準緩
沖區,使
用的函式
是getchar()
,此函式的作用是從標準輸入緩衝區中讀出乙個字元,此方法中
linux
中可行。
如果需要清除
stdin
可以通過如下迴圈實現:
char ch;
while((ch=getchar())!='\n'&&ch!=eof);
以上語句將清除
stdin
中的字元,知道遇到換行符或者是讀完緩衝區。
以上的方法均可以在
windows
程式設計中用來清除緩衝區;4.在
linux
程式設計中也還是有一種用來清空
stdin
中的方法,直接呼叫如下的函式:
清除鍵盤緩衝區
關於清除鍵盤緩衝區殘餘資訊問題 迴圈scanf 可能導致直接讀入 n.include int main while c n scanf c c 這句不能正常接收字元,什麼原因呢?我們用printf c d n c 將c用int表示出來,啟用 printf c d n c 這一句,看看scanf 函式...
C語言清除輸入緩衝區
在使用scanf輸入時,如果輸入不合法,此時可以檢查其返回值為0,但下次再呼叫時,上次不合法的輸入,還在輸入緩衝區中,此時就會接著不合法,如下 include int main int argc,char argv printf you input is d n id return 0 這樣,如果輸...
C語言清除輸入緩衝區
在使用scanf輸入時,如果輸入不合法,此時可以檢查其返回值為0,但下次再呼叫時,上次不合法的輸入,還在輸入緩衝區中,此時就會接著不合法,如下 include int main int argc,char argv printf you input is d n id return 0 這樣,如果輸...