C語言輸入字元和字串

2021-10-03 00:27:32 字數 2479 閱讀 2335

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() 的用法:

#include 

intmain()

輸入示例:

@↙

c: @

你也可以將第 4、5 行的語句合併為乙個,從而寫作:

char c =

getchar()

;

2 . getche()

getche() 就比較有意思了,它沒有緩衝區,輸入乙個字元後會立即讀取,不用等待使用者按下回車鍵,這是它和 scanf()、getchar() 的最大區別。請看下面的**:

#include 

#include

intmain()

輸入示例:

@c

: @

輸入@後,getche() 立即讀取完畢,接著繼續執行 printf() 將字元輸出,所以沒有按下回車鍵程式就執行結束了。

注意,getche() 位於 conio.h 標頭檔案中,而這個標頭檔案是 windows 特有的,預設只能在 windows 下使用。

3 . getch()

getch() 也沒有緩衝區,輸入乙個字元後會立即讀取,不用按下回車鍵,這一點和 getche() 相同。getch() 的特別之處是它沒有回顯,看不到輸入的字元。所謂回顯,就是在控制台上顯示出使用者輸入的字元;沒有回顯,就不會顯示使用者輸入的字元,就好像根本沒有輸入一樣。

回顯在大部分情況下是有必要的,它能夠與使用者及時互動,讓使用者清楚地看到自己輸入的內容。但在某些特殊情況下,我們卻不希望有回顯,例如輸入密碼,有回顯是非常危險的,容易被**。

getch() 使用舉例:

#include 

#include

intmain()

輸入@後,getch() 會立即讀取完畢,接著繼續執行 printf() 將字元輸出。但是由於 getch() 沒有回顯,看不到輸入的@字元,所以控制台上最終顯示的內容為c: @。

注意,和 getche() 一樣,getch() 也位於 conio.h 標頭檔案中,也不是標準函式,預設只能在 windows 下使用。

對三個函式的總結

輸入字串當然可以使用 scanf() 這個通用的輸入函式,對應的格式控制符為%s,上節已經講到了;本節我們重點講解的是 gets() 這個專用的字串輸入函式,它擁有乙個 scanf() 不具備的特性。

gets() 的使用也很簡單,請看下面的**:

#include 

intmain()

執行結果:

gets() 是有緩衝區的,每次按下回車鍵,就代表當前輸入結束了,gets() 開始從緩衝區中讀取內容,這一點和 scanf() 是一樣的。gets() 和 scanf() 的主要區別是:

scanf() 讀取字串時以空格為分隔,遇到空格就認為當前字串結束了,所以無法讀取含有空格的字串。

gets() 認為空格也是字串的一部分,只有遇到回車鍵時才認為字串輸入結束,所以,不管輸入了多少個空格,只要不按下回車鍵,對 gets() 來說就是乙個完整的字串。

也就是說,gets() 能讀取含有空格的字串,而 scanf() 不能。

如果感覺不錯的話請點贊喲!!!

C語言輸入字元和字串

字元 對三個函式的總結 getchar getche getch 函式緩衝區 標頭檔案回顯 適用平台 getchar 有stdio.h 有windows linux mac os 等所有平台 getche 無conio.h 有windows getch 無conio.h 無windows 使用者按下...

C語言字串輸入和輸出

字串一文對字串做了個簡單介紹,若要讀取字串,則首先需要分配空間,最簡單的辦法就是宣告陣列,如下 char name 20 c語言提供了許多字串輸入函式 scanf gets 和fgets 等 輸出函式 printf puts 和fputs 函式等。本文主要講解這部分內容。另外,c 也提供了字串行輸入...

C語言 字串和字串函式

輸入 gets 函式 1.gets 從標準輸入裝置讀取字串,以回車結束讀取,使用 0 結尾,回車符 n 被捨棄沒有遺留在緩衝區。2.可以用來輸入帶空格的字串。3.可以無限讀取,不會判斷上限,因此使用gets不安全,可能會造成溢位。fgets 和 fputs 函式 1.fgets函式的第2個引數指明了...