getch, getche, getchar 转
(1) getch()和getche()函數(shù)?
??? 這兩個函數(shù)都是從鍵盤上讀入一個字符。其調(diào)用格式為:?
???? getch();?
???? getche();?
??? 兩者的區(qū)別是: getch()函數(shù)不將讀入的字符回顯在顯示屏幕上, 而getche()?
函數(shù)卻將讀入的字符回顯到顯示屏幕上。?
??? 例1:?
???? #include<stdio.h>?
???? main()?
???? {?
????????? char c, ch;?
????????? c=getch();???? /*從鍵盤上讀入一個字符不回顯送給字符變量c*/?
????????? putchar(c);??? /*輸出該字符*/?
????????? ch=getche();?? /*從鍵盤上帶回顯的讀入一個字符送給字符變量ch*/?
????????? putchar(ch);?
???? }?
??? 利用回顯和不回顯的特點, 這兩個函數(shù)經(jīng)常用于交互輸入的過程中完成暫停?
等功能。?
??? 例2:?
???? #include<stdio.h>?
???? main()?
???? {?
????????? char c, s[20];?
????????? printf("Name:");?
????????? gets(s);?
????????? printf("Press any key to continue...");?
????????? getch();? /*等待輸入任一鍵*/?
???? }?
??
??? (2) getchar()函數(shù)?
??? getchar()函數(shù)也是從鍵盤上讀入一個字符, 并帶回顯。它與前面兩個函數(shù)?
的區(qū)別在于: getchar()函數(shù)等待輸入直到按回車才結(jié)束,? 回車前的所有輸入字?
符都會逐個顯示在屏幕上。但只有第一個字符作為函數(shù)的返回值。?
??? getchar()函數(shù)的調(diào)用格式為:?
???? getchar();?
??? 例3:?
???? #include<stdio.h>?
???? main()?
???? {?
????????? char c;?
????????? c=getchar();?? /*從鍵盤讀入字符直到回車結(jié)束*/?
????????? putchar(c);??? /*顯示輸入的第一個字符*/?
????????? getch();?????? /*等待按任一健*/?
???? }?
例4
#include<stdio.h>?
???? main()?
???? {?
????????? char c;?
????????? while ((c=getchar())!='/n')?? /*每個getchar()依次讀入一個字符*/
????????? printf("%c",c);??? /*按照原樣輸出*/
????????? getch();?????? /*等待按任一健*/?
???? }
?
?
再說下文件尾部getch();的原因。
?
首先不要忘了,要用getch()必須引入頭文件conio.h,以前學C語言的時候,我們總喜歡用在程序的末尾加上它,利用它來實現(xiàn)程序運行完了暫停不退出的效果。如果不加這句話,在TC2.0的環(huán)境中我們用Ctrl+F9編譯并運行后,程序一運行完了就退回到TC環(huán)境中,我們根本來不及看到結(jié)果,這時要看結(jié)果,我們就要按Alt+F5回到DOS環(huán)境中去看結(jié)果,這很麻煩。而如果在程序的結(jié)尾加上一行g(shù)etch();語句,我們就可以省掉會DOS看結(jié)果這個步驟,因為程序運行完了并不退出,而是在程序最后把屏幕停住了,按任意鍵才退回到TC環(huán)境中去。那我們來看看getch()到底起的什么作用,getch()實際是一個輸入命令,就像我們用cin>>的時候程序會停下來等你輸入,和cin不同的是,getch()的作用是從鍵盤接收一個字符,而且并不把這個字符顯示出來,就是說,你按了一個鍵后它并不在屏幕上顯示你按的什么,而繼續(xù)運行后面的代碼,所以我們在C++中可以用它來實現(xiàn)“按任意鍵繼續(xù)”的效果,即程序中遇到getch();這行語句,它就會把程序暫停下來,等你按任意鍵,它接收了這個字符鍵后再繼續(xù)執(zhí)行后面的代碼。
你也許會問,為什么我們在C++中就沒有在程序的末尾加上getch(),解釋是,軟件總是不斷更新的,不好的地方當然要進行改正,getch()加在程序末尾,它又不賦值給任何變量,所以它在這個地方完全是垃圾代碼,與程序無關(guān)。C++中考慮到這一點,于是在每次程序運行完了并不退出,而是自動把屏幕停下來,并顯示“press any key...”叫你按任意鍵退出,這就好比C++在它的環(huán)境中運行程序,在程序的末尾自動加上了一行g(shù)etch();語句,并且在這行語句前還添加了一行輸出語句cout<<"press any key...";來提示你程序結(jié)束了,按任意鍵繼續(xù)。實際上我們編譯好的程序在程序結(jié)束了本身是不會停下來的,我們可以在編譯產(chǎn)生的Debug目錄中找到這個編譯好的應用程序(擴展名exe),在文件夾中雙擊運行它,你會發(fā)現(xiàn)屏幕閃了一下MS-DOS窗口就關(guān)閉了,因為程序運行完就自動退出了,回到了windows環(huán)境,當然,如果我們在DOS環(huán)境中運行這個程序,我們就可以直接在看到DOS屏幕上看到程序運行結(jié)果,因為程序運行完后并不清屏。
還有一個語句,和getch()很相似,getche(),它也需要引入頭文件conio.h,那它們之間的區(qū)別又在哪里呢?不同之處就在于getch()無返回顯示,getche()有返回顯示。
?
http://blog.csdn.net/hairetz/article/details/4161954
轉(zhuǎn)載于:https://www.cnblogs.com/aprilapril/archive/2013/04/18/3029554.html
總結(jié)
以上是生活随笔為你收集整理的getch, getche, getchar 转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android实现通用的Activity
- 下一篇: C#源代码生成器