C 學習筆記 陣列的輸入

2021-07-31 10:54:21 字數 1365 閱讀 7430

字串在c++中是特殊的存在(很多字串函式,用字串比用字元陣列更方便,但是也導致字串的使用方法和其他陣列不同),因此在討論陣列問題是,都會把字串單獨拉出來說。

一、非字串的輸入方法

cin>>a[i];

本語句用於將鍵盤輸入的資訊儲存在a[i]中。

使用cin不需要向c語言一樣需要指出資料的型別,cin會直接按照之前對陣列的型別宣告,將輸入的資料按照宣告的型別儲存在陣列中。

使用cin輸入數字的時候,會把回車留在緩衝區,如果後面還有別的輸入,留在緩衝區的回車可能會導致意外結果。

為了防止出現這種情況,cin後面跟乙個接收回車字元的函式吧。具體方法看下面。

二、字串的輸入方法

1、cin.getline(儲存陣列名,字元個數);

執行過程:本函式可以讀入一行字元(回車為函式識別結束的位置)。如果讀到回車,會把回車換成'\0'儲存在字串的最後;如果讀到字元個數減一還沒有遇到回車符,就會在最後乙個位置上存入'\0'。

舉例:cin.getline(name,20);

如果已經讀了19個字元還沒有遇到回車,陣列的最後乙個元素會存入'\0',即name[19] = '\0'.

2、cin.get(陣列名,字元個數);

本函式和cin.getline()非常類似,只有乙個區別:cin.getline()會接受回車並把回車換成'\0';cin.get()在讀到回車時會把回車留在緩衝區。

所以使用cin.get()函式,請在函式後面,再使用乙個輸入函式接收那個回車,否則可能會導致意想不到的後果。

cin.get()函式有個變體——不含參的cin.get();

如果cin.get()不含引數,它會只接收乙個字元,因此可以用下述方法去**那個回車:

cin.get(name,30);//將字串存入name陣列,將回車留在了緩衝區

cin.get();//用不含參的cin.get()接收字串後的回車

雖然cin.get()函式有些使用上的麻煩,但是cin.get()函式有個好處,就是可以利用後面緊跟著的接收回車的函式返回值判斷是否輸入超過了陣列的元素個數。

如果接收回車的函式接收到了回車,說明沒有超過陣列元素個數;如果接收回車的函式接收到了別的字元,說明輸入超過了元素個數。

三、數字與字串的混合輸入(小結,最保險的處理方法)

為了防止回車的干擾,建議採用如下手段輸入數字和字元

輸入數字時使用下面的格式

(cin>>a).get;

它等同於

cin>>a;

cin.get;//cin>>a返回值仍然是cin型別,因此後面可以直接.get,相當於cin.get

輸入字串時,使用下面格式

cin.get(目標陣列名,字元個數);

cin.get();//接收回車

C學習筆記 陣列

陣列是一組具有相同資料型別的變數集合,這裡要注意兩點,陣列只能儲存相同的資料型別和陣列的記憶體是連續的,這位陣列和指標的聯絡奠定了基礎。定義及初始化 一維陣列指的是只有乙個下標的陣列,它用來表示一組具有相同型別的資料 其格式為 型別說明符 陣列名 常量表示式 e.g.int arr 3 上式表達的是...

C 學習讀書筆記 陣列

1.c 有幾條關於初始化陣列的規則,他們限制了初始化的時刻 只有在定義陣列時才能使用初始化,此後就不能使用了,也不能將乙個陣列賦予另乙個陣列 int people 4 ok int class 4 ok class 4 not allowed class people not allowed 不過可...

C語言學習筆記《陣列》

1,已知陣列x有5個元素,精組y有6個元素.請分別對x和y排序。輸出x和y排序後的元素 include main y 6 int i,j,sum 0 for i 0 i 4 i int i,j,sum for i 0 i 9 i for i 0 i 9 i printf d t a i code c...