C 各種輸入

2021-08-21 16:38:34 字數 3216 閱讀 4748

1.cin.get()基本用法

(1)1個引數

用法:a = cin.get() 或者 cin.get(a)

結束條件:輸入字元足夠後回車

說明:這個是單字元的輸入,用途是輸入乙個字元,把它的ascall碼存入到a中

處理方法:與cin不同,cin.get() 在緩衝區遇到[enter],[space],[tab]不會作為捨棄,而是繼續留在緩衝區中

(2)2個引數

用法:cin.get(arrayname,size) 把字元輸入到arrayname中,長度不超過size

注釋:arrayname必須是char型別,即char陣列型別,不可以為string型別;size是指輸入長度,即允許輸入的最大長度。

處理方法:假設把資料輸入到 char a[arraylength],陣列長度為arraylength。cin.get(a,size)—size,arraylength不同可以分為四類:

類1:輸入串長arraylength,會自動擴張arrayname大小,使能儲存所有資料

例1:char a[10];cin,get(a,20);

輸入:123456789012[enter]

輸出a陣列:123456789012 可以發現,輸入12個字元到a[10]中,系統自動擴充a[10],此時實際陣列長為13(『123456789012』\0』』)。但當計算sizeof(a)時,還是現實為10

類2:輸入串長

例2:char a[10];cin.get(a,20);

輸入:12345[enter]

輸出:12345,此時陣列內資料為『12345『\0』』

類3:輸入串長》size,先擷取size個字元,若還是大於arraylength,則輸入前arraylength-1個字元,最後補充『\0』

例3:char a[5];cin,get(a,10);

輸入:123456789012[enter]

輸出:123456789 先擷取了9個字元變成『123456789『/0『』,然後放入到a中,a自動擴張長度

類4:輸入串長》size,先擷取size個字元,若小於arraylength,則把擷取串放入陣列中,最後補充『\0』

例4:char a[15],cin.get(a,10)

輸入:123456789012[enter]

輸出:123456789 此時陣列內為『123456789『\0』』 注意:前size-1有效,最後乙個補『\0』

綜上:當吧大於陣列長度的字串放出char a[arraylength]中,系統自動擴張陣列a的長度使a能放得下,但是這麼做容易產生執行錯誤。

(3)3個引數

用法:cin.get(arrayname,size,s) 把資料輸入到arrayname字元陣列中,當到達長度size時結束或者遇到字元s時結束

注釋:a必須是字元陣列,即char al型別,不可為string型別;size為最大的輸入長度;s為控制,遇到s則當前輸入結束快取區里的s將被捨棄。

2.cin.getline()基本用法

cin.getline() 的用法和 cin.get() 用法大致相同,沒有一引數用法,只有二引數,三引數兩類

cin.gerline( arrayname, size )

cin.getline( arrayname, size, s )

用法與 cin.get() 效果大致相同,但也有些區別

(1)cin.getline(arrayname,size)與cin.get(arrayname,size)的區別

cin.get(arrayname,size)當遇到[enter]時會結束目前輸入,他不會刪除緩衝區中的[enter]

cin.getline(arrayname,size)當遇到[enter]時會結束當前輸入,但是會刪除緩衝區中的[enter]

#include  

using

namespace

std;

int main()

輸入:12345[enter]

輸出:12345 【換行】 10

說明:cin.get(a,10)把12345到a中,遇到[enter]結束,但是不把[enter]刪除,則把[enter]輸入到b中,(enter的ascall碼為10)

include  using

namespace

std;

int main()

輸入:12345[enter]a[enter]

輸出:12345【換行】97

說明:cin.getline(a,10)吧12345輸入到a中,遇到結束,並把緩衝區中[enter]刪除,把接下來的a輸入到b中

(2)cin.getline(arrayname,size,s)與cin.gei(arrayname,size,s)的區別

cin.getline( arrayname , size , s ) 當遇到s時會結束輸入,並把s從緩衝區中刪除

cin.get(arrayname , size , s)當遇到s時會結束輸入,但不會刪除緩衝區中的s。

include

using namespace std;

int main()

輸入:12345,[enter]

輸出:12345【換行】10

說明:cin.getline吧12345輸入到a中,遇到』,『結束,並刪除緩衝區的』,『,後面的[enter]輸入到b中

總之,cin.get() 不刪,cin.getline() 刪。

運用—以任何符號作為輸入分隔符

例題:輸入五個學生的名字,每個學生的名字不超過10個字元,輸入時學生名字之間用逗號隔開,把這五個名字儲存並換行輸出。

include using

namespace

std;

int main()

執行結果為:

如果不新增以*注釋的**,則執行結果為:

參考自:

各種輸入方法總結(C )

檢視部落格 c 基礎 各種輸入方法總結,cin cin.get cin.getline getline gets getchar 檢視部落格 c 中cin.get cin.getline getchar getch 的區別 檢視部落格 cin.get 與cin.peek 的使用 下面是我整理過後的做...

各種輸入的區別

c 中cin cin.get cin.getline getline gets 等函式的用法 學c 的時候,這幾個輸入函式弄的有點迷糊 這裡做個小結,為了自己複習,也希望對後來者能有所幫助,如果有差錯的地方還請各位多多指教 本文所有程式均通過vc 6.0執行 1 cin 2 cin.get 3 ci...

各種輸入的總結

一 gets 與scanf讀取字串的區別 1.截止字元不同。gets函式固定的以換行符作為結尾,遇到 換行符時結束輸入。scanf函式預設以 空白函式結尾,同時可以對截止函式進行修改,以 空格和換行 截止。2.對截止字元處理不同。gets函式 會讀入截止字元 n,同時將 n自動替換為 0.scanf...