C路歷程1(原作於08年3月19日晚0點42分)

昨天晚上從六點開始一直到12點,我一直都在研究一下問題:C語言中的getchar()、getch()和getche()的使用,以前關於輸入函數的那麼多問題終於解決掉了,心情大好啊!不過付出的代價就是我的高數作業什麼的都沒做,最後就找同學借了一本輔導書大抄特抄!說實話,這是我新學期開始後延第一次抄作業,羞愧啊!
_________________________________________________________________________
      現總結如下:getchar()是stdio.h中的庫函數,它的作用是從stdin流中讀入一個字符,也就是說,如果stdin有數據的話不用輸入它就可以直接讀取了。而getch()和getche()是conio.h中的庫函數,它的作用是從鍵盤接收字符。getchar帶有顯示。與前面兩個函數的區別在於: getchar()函數等待輸入直到按回車才結束(前提是緩衝區沒有數據),回車前的所有輸入字符都會逐個顯示在屏幕上。但只有第一個字符作爲函數的返回值。C標準規定 fflush()函數是用來刷新輸出(stdout)緩存的。對於輸入(stdin),它是沒有定義的。但是有些編譯器也定義了 fflush( stdin )的實現,比如微軟的VC。其它編譯器是否也定義了 fflush( stdin )的實現應當查找它的手冊。GCC編譯器沒有定義它的實現,所以不能使用 fflush( stdin )來刷新輸入緩存。 對於沒有定義 fflush( stdin )的編譯器,可以使用 fgets()函數來代替它(比用 getchar()、scanf()等函數通用性好)。可以這樣忽略輸入流中留下的回車等其它輸入,從而使下一次的輸入總保持一個“乾淨”的狀態。(這個是任何平臺下都可以的)。
// ...
char sbuf[1024];
// ...
fgets( sbuf, 1024, stdin );
// ...

在windows 的vc下面就可以這樣了:
for(int i=0;i<10;++i)
{
       char ch=getchar();
       fflush(stdin); //每次都會有等待狀態了
}
_________________________________________________________________________

額~~~感覺學習C語言挺好玩的。本來打算這學期要學網絡安全方面的知識,現在改了,不學這個了,我前幾天幫一個朋友的朋友搞QQ密碼,搞了兩個小時也搞不下來,密碼字典是最大的問題,而且時間也是很大的一個問題。一個同志和我說,想真真正正學網絡安全知識,首先要有堅實的C語言知識和彙編知識,這樣才能搞密碼學。巧了,我正好也對彙編也感興趣,所以特意在此對自己說:這學期加個暑假的兩個月,主攻C語言和彙編語言!!!
在此要特別感謝我的奴才,在我很迷惑的時候,把我罵醒了......MD,我要振作,最晚用二十年的時間實現自己的理想!!!
發佈了23 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章