
c++字符串合并_C語?輸?字符和字符串(所有函數?匯總)
C語?輸?字符和字符串(所有函數?匯總)
C語?有多個函數可以從鍵盤獲得?戶輸?,它們分別是:
scanf():和printf()類似,scanf()可以輸?多種類型的數據。
getchar()、getche()、getch():這三個函數都?于輸?單個字符。
gets():獲取??數據,并作為字符串處理。
scanf()是最靈活、最復雜、最常?的輸?函數,上節我們已經進?了講解,本節接著講解剩下的函數,也就是字符輸?函數和字符串輸?
函數。
輸?單個字符
輸?單個字符當然可以使?scanf()這個通?的輸?函數,對應的格式控制符為%c,上節已經講到了。本節我們重點講解的是
getchar()、getche()和getch()這三個專?的字符輸?函數,它們具有某些scanf()沒有的特性,是scanf()不能代替的。
1)getchar()
最容易理解的字符輸?函數是getchar(),它就是scanf("%c",c)的替代品,除了更加簡潔,沒有其它優勢了;或者說,getchar()就是
scanf()的?個簡化版本。
下?的代碼演?了getchar()的?法:
#includeintmain(){charc;c=getchar();printf("c:%c",c);return0;}
輸??例:
@↙c:@
你也可以將第4、5?的語句合并為?個,從?寫作:
charc=getchar();
2)getche()
getche()就?較有意思了,它沒有緩沖區,輸??個字符后會?即讀取,不?等待?戶按下回車鍵,這是它和scanf()、getchar()的最?
區別。請看下?的代碼:
#include#includeintmain(){charc=getche();printf("c:%c",c);return0;}
輸??例:
@c:@
輸?@后,getche()?即讀取完畢,接著繼續執?printf()將字符輸出,所以沒有按下回車鍵程序就運?結束了。
注意,getche()位于conio.h頭?件中,?這個頭?件是Windows特有的,Linux和MacOS下沒有包含該頭?件。換句話
說,getche()并不是標準函數,默認只能在Windows下使?,不能在Linux和MacOS下使?。
3)getch()
getch()也沒有緩沖區,輸??個字符后會?即讀取,不?按下回車鍵,這?點和getche()相同。getch()的特別之處是它沒有回顯,看
不到輸?的字符。所謂回顯,就是在控制臺上顯?出?戶輸?的字符;沒有回顯,就不會顯??戶輸?的字符,就好像根本沒有輸??樣。
回顯在?部分情況下是有必要的,它能夠與?戶及時交互,讓?戶清楚地看到??輸?的內容。但在某些特殊情況下,我們卻不希望有回
顯,例如輸?密碼,有回顯是?常危險的,容易被偷窺。
getch()使?舉例:
#include#includeintmain(){charc=getch();printf("c:%c",c);return0;}
輸?@后,getch()會?即讀取完畢,接著繼續執?printf()將字符輸出。但是由于getch()沒有回顯,看不到輸?的@字符,所以控制臺
上最終顯?的內容為c:@。
注意,和getche()?樣,getch()也位于conio.h頭?件中,也不是標準函數,默認只能在Windows下使?,不能在Linux和MacOS
下使?。
對三個函數的總結
函數緩沖區頭?件回顯適?平臺getchar()有stdio.h有Windows、Linux、MacOS等所有平臺getche()?conio.h有Windowsgetch()?
conio.h?Windows
輸?字符串
輸?字符串當然可以使?scanf()這個通?的輸?函數,對應的格式控制符為%s,上節已經講到了;本節我們重點講解的是gets()這個專
?的字符串輸?函數,它擁有?個scanf()不具備的特性。
gets()的使?也很簡單,請看下?的代碼:
#includeintmain(){charauthor[30],lang[30],url[30];gets(author);printf("author:%s",author);gets(lang);printf("lang:%s",lang);gets(url);
運?結果:
gets()是有緩沖區的,每次按下回車鍵,就代表當前輸?結束了,gets()開始從緩沖區中讀取內容,這?點和scanf()是?樣的。gets()
和scanf()的主要區別是:
scanf()讀取字符串時以空格為分隔,遇到空格就認為當前字符串結束了,所以?法讀取含有空格的字符串。
gets()認為空格也是字符串的?部分,只有遇到回車鍵時才認為字符串輸?結束,所以,不管輸?了多少個空格,只要不按下回車鍵,
對gets()來說就是?個完整的字符串。
也就是說,gets()能讀取含有空格的字符串,?scanf()不能。
總結
C語?中常?的從控制臺讀取數據的函數有五個,它們分別是scanf()、getchar()、getche()、getch()和gets()。其中scanf()、
getchar()、gets()是標準函數,適?于所有平臺;getche()和getch()不是標準函數,只能?于Windows。
scanf()是通?的輸?函數,它可以讀取多種類型的數據。
getchar()、getche()和getch()是專?的字符輸?函數,它們在緩沖區和回顯??與scanf()有著不同的特性,是scanf()不能替代的。
gets()是專?的字符串輸?函數,與scanf()相?,gets()的主要優勢是可以讀取含有空格的字符串。
scanf()可以?次性讀取多份類型相同或者不同的數據,getchar()、getche()、getch()和gets()每次只能讀取?份特定類型的數據,不
能?次性讀取多份數據。
本文發布于:2023-03-07 06:24:09,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1678141450128592.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:getche.doc
本文 PDF 下載地址:getche.pdf
| 留言與評論(共有 0 條評論) |
|