首頁  >  文章  >  後端開發  >  c語言數組怎麼輸入?

c語言數組怎麼輸入?

little bottle
little bottle原創
2019-05-07 10:42:34104400瀏覽

c語言數組怎麼輸入?

在C語言中,有兩個函數可以讓使用者從鍵盤輸入數組數據,它們分別是gets()scanf() 。 scanf()是透過格式控制符%s輸入陣列字串,除了字串,還能輸入其他類型的資料;gets()是直接輸入陣列字串,並且只能輸入字串。

但是,scanf()和gets()是有差別的。

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

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

#include 
int main(){
char str1[30] = {0};
char str2[30] = {0};
char str3[30] = {0};
//gets() 用法
printf("Input a string: ");
gets(str1);
//scanf() 用法
printf("Input a string: ");
scanf("%s", str2);
scanf("%s", str3);
//分别输出
printf("\nstr1: %s\n", str1);
printf("str2: %s\n", str2);
printf("str3: %s\n", str3);
return 0;
}

執行結果:

Input a string: C C++ Java Python
Input a string: PHP JavaScript
str1: C C++ Java Python
str2: PHP
str3: JavaScript

第一次輸入的字串被 gets() 全部讀取,存入 str1 中。第二次輸入的字串,前半部被第一個 scanf() 讀取並存入 str2 中,後半部被第二個 scanf() 讀取並存入 str3 中。
注意,scanf() 在讀取資料時需要的是資料的位址,這一點是恆定不變的,所以對於int、char、float 等類型的變數都要在前邊添加&以取得它們的位址。但是在本段程式碼中,我們只給了字串的名字,卻沒有在前邊加上&,這是為什麼呢?因為字串名字或陣列名字在使用的過程中一般都會轉換為位址,所以再加&就是多此一舉,甚至會導致錯誤了。
就目前學到的知識而言,int、char、float 等類型的變數用於scanf() 時都要在前面加上&,而陣列或字串用於scanf() 時不用加&,它們本身就會轉換為地址。讀者一定要謹記這一點。
至於陣列名字(字串名字)和位址的轉換細節,以及陣列名字何時會轉換為位址。

以上是c語言數組怎麼輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn