C語言scanf:讀取從鍵盤輸入的數(shù)據(jù)(含輸入格式匯總表)

程序是人機交互的媒介,有輸出必然也有輸入,第三章我們講解了如何將數(shù)據(jù)輸出到顯示器上幔亥,本章我們開始講解如何從鍵盤輸入數(shù)據(jù)荞怒。在C語言中洒琢,有多個函數(shù)可以從鍵盤獲得用戶輸入:

scanf():和 printf() 類似,scanf() 可以輸入多種類型的數(shù)據(jù)褐桌。

getchar()衰抑、getche()、getch():這三個函數(shù)都用于輸入單個字符荧嵌。

gets():獲取一行數(shù)據(jù)呛踊,并作為字符串處理。

scanf() 是最靈活啦撮、最復雜谭网、最常用的輸入函數(shù),但它不能完全取代其他函數(shù)赃春,大家都要有所了解蜻底。

本節(jié)我們只講解 scanf(),其它的輸入函數(shù)將在下節(jié)講解聘鳞。

scanf()函數(shù)

scanf 是 scan format 的縮寫薄辅,意思是格式化掃描,也就是從鍵盤獲得用戶輸入抠璃,和 printf 的功能正好相反站楚。

我們先來看一個例子:

#include <stdio.h>

int main()

{

int a = 0, b = 0, c = 0, d = 0;

scanf("%d", &a); //輸入整數(shù)并賦值給變量a

scanf("%d", &b); //輸入整數(shù)并賦值給變量b

printf("a+b=%d\n", a+b); //計算a+b的值并輸出

scanf("%d %d", &c, &d); //輸入兩個整數(shù)并分別賦值給c、d

printf("c*d=%d\n", c*d); //計算c*d的值并輸出

return 0;

}

運行結(jié)果:

12↙

60↙

a+b=72

10 23↙

c*d=230

↙表示按下回車鍵搏嗡。

從鍵盤輸入12窿春,按下回車鍵,scanf() 就會讀取輸入數(shù)據(jù)并賦值給變量 a采盒;本次輸入結(jié)束旧乞,接著執(zhí)行下一個 scanf() 函數(shù),再從鍵盤輸入 60磅氨,按下回車鍵尺栖,就會將 60 賦值給變量 b,都是同樣的道理烦租。

第 8 行代碼中延赌,scanf() 有兩個以空格分隔的%d除盏,后面還跟著兩個變量,這要求我們一次性輸入兩個整數(shù)挫以,并分別賦值給 c 和 d者蠕。注意"%d %d"之間是有空格的,所以輸入數(shù)據(jù)時也要有空格掐松。對于 scanf()踱侣,輸入數(shù)據(jù)的格式要和控制字符串的格式保持一致。

其實 scanf 和 printf 非常相似大磺,只是功能相反罷了:

scanf("%d %d", &a, &b); // 獲取用戶輸入的兩個整數(shù)抡句,分別賦值給變量 a 和 b

printf("%d %d", a, b); // 將變量 a 和 b 的值在顯示器上輸出

它們都有格式控制字符串,都有變量列表量没。不同的是玉转,scanf 的變量前要帶一個&符號突想。&稱為取地址符殴蹄,也就是獲取變量在內(nèi)存中的地址。

在《數(shù)據(jù)在內(nèi)存中的存儲》一節(jié)中講到猾担,數(shù)據(jù)是以二進制的形式保存在內(nèi)存中的袭灯,字節(jié)(Byte)是最小的可操作單位。為了便于管理绑嘹,我們給每個字節(jié)分配了一個編號稽荧,使用該字節(jié)時,只要知道編號就可以工腋,就像每個學生都有學號姨丈,老師會隨機抽取學號來讓學生回答問題。字節(jié)的編號是有順序的擅腰,從 0 開始蟋恬,接下來是 1、2趁冈、3……

下圖是 4G 內(nèi)存中每個字節(jié)的編號(以十六進制表示):

?

這個編號歼争,就叫做地址(Address)。int a;會在內(nèi)存中分配四個字節(jié)的空間渗勘,我們將第一個字節(jié)的地址稱為變量 a 的地址沐绒,也就是&a的值。對于前面講到的整數(shù)旺坠、浮點數(shù)乔遮、字符,都要使用 & 獲取它們的地址取刃,scanf 會根據(jù)地址把讀取到的數(shù)據(jù)寫入內(nèi)存申眼。

我們不妨將變量的地址輸出看一下:

#include <stdio.h>

int main()

{

int a='F';

int b=12;

int c=452;

printf("&a=%p, &b=%p, &c=%p\n", &a, &b, &c);

return 0;

}

輸出結(jié)果:

&a=0x18ff48, &b=0x18ff44, &c=0x18ff40

%p是一個新的格式控制符瞒津,它表示以十六進制的形式(帶小寫的前綴)輸出數(shù)據(jù)的地址。如果寫作%P括尸,那么十六進制的前綴也將變成大寫形式巷蚪。

?

圖:a、b濒翻、c 的內(nèi)存地址

注意:這里看到的地址都是假的屁柏,是虛擬地址,并不等于數(shù)據(jù)在物理內(nèi)存中的地址有送。虛擬地址是現(xiàn)代計算機因內(nèi)存管理的需要才提出的概念淌喻,我們將在《C語言內(nèi)存精講》專題中詳細講解。

再來看一個 scanf 的例子:

#include <stdio.h>

int main()

{

int a, b, c;

scanf("%d %d", &a, &b);

printf("a+b=%d\n", a+b);

scanf("%d %d", &a, &b);

printf("a+b=%d\n", a+b);

scanf("%d, %d, %d", &a, &b, &c);

printf("a+b+c=%d\n", a+b+c);

scanf("%d is bigger than %d", &a, &b);

printf("a-b=%d\n", a-b);

return 0;

}

運行結(jié)果:

10? ? 20↙

a+b=30

100 200↙

a+b=300

56,45,78↙

a+b+c=179

25 is bigger than 11↙

a-b=14

第一個 scanf() 的格式控制字符串為"%d %d"雀摘,中間有一個空格裸删,而我們卻輸入了10??? 20,中間有多個空格阵赠。第二個 scanf() 的格式控制字符串為"%d?? %d"涯塔,中間有多個空格,而我們卻輸入了100 200清蚀,中間只有一個空格匕荸。這說明 scanf() 對輸入數(shù)據(jù)之間的空格的處理比較寬松,并不要求空格數(shù)嚴格對應枷邪,多幾個少幾個無所謂榛搔,只要有空格就行。

第三個 scanf() 的控制字符串為"%d, %d, %d"东揣,中間以逗號分隔践惑,所以輸入的整數(shù)也要以逗號分隔。

第四個 scanf() 要求整數(shù)之間以is bigger than分隔嘶卧。

用戶每次按下回車鍵尔觉,程序就會認為完成了一次輸入操作,scanf() 開始讀取用戶輸入的內(nèi)容脸候,并根據(jù)格式控制字符串從中提取有效數(shù)據(jù)穷娱,只要用戶輸入的內(nèi)容和格式控制字符串匹配,就能夠正確提取运沦。

本質(zhì)上講泵额,用戶輸入的內(nèi)容都是字符串,scanf() 完成的是從字符串中提取有效數(shù)據(jù)的過程携添。

連續(xù)輸入

在本節(jié)第一段示例代碼中嫁盲,我們一個一個地輸入變量 a、b、c羞秤、d 的值缸托,每輸入一個值就按一次回車鍵。現(xiàn)在我們改變輸入方式瘾蛋,將四個變量的值一次性輸入俐镐,如下所示:

12 60 10 23↙

a+b=72

c*d=230

可以發(fā)現(xiàn),兩個 scanf() 都能正確讀取哺哼。合情合理的猜測是佩抹,第一個 scanf() 讀取完畢后沒有拋棄多余的值,而是將它們保存在了某個地方取董,下次接著使用棍苹。

如果我們多輸入一個整數(shù),會怎樣呢茵汰?

12 60 10 23 99↙

a+b=72

c*d=230

這次我們多輸入了一個 99枢里,發(fā)現(xiàn) scanf() 仍然能夠正確讀取,只是 99 沒用罷了蹂午。

如果我們少輸入一個整數(shù)栏豺,又會怎樣呢?

12 60 10↙

a+b=72

23↙

c*d=230

輸入三個整數(shù)后画侣,前兩個 scanf() 把前兩個整數(shù)給讀取了冰悠,剩下一個整數(shù) 10堡妒,而第三個 scanf() 要求輸入兩個整數(shù)配乱,一個單獨的 10 并不能滿足要求,所以我們還得繼續(xù)輸入皮迟,湊夠兩個整數(shù)以后搬泥,第三個 scanf() 才能讀取完畢。

從本質(zhì)上講伏尼,我們從鍵盤輸入的數(shù)據(jù)并沒有直接交給 scanf()忿檩,而是放入了緩沖區(qū)中,直到我們按下回車鍵爆阶,scanf() 才到緩沖區(qū)中讀取數(shù)據(jù)燥透。如果緩沖區(qū)中的數(shù)據(jù)符合 scanf() 的要求,那么就讀取結(jié)束辨图;如果不符合要求班套,那么就繼續(xù)等待用戶輸入,或者干脆讀取失敗故河。我們將在本章的《進入緩沖區(qū)(緩存)的世界吱韭,破解一切與輸入輸出有關(guān)的疑難雜癥》《結(jié)合C語言緩沖區(qū)談scanf函數(shù)》兩節(jié)中詳細講解緩沖區(qū)。

注意鱼的,如果緩沖區(qū)中的數(shù)據(jù)不符合 scanf() 的要求理盆,要么繼續(xù)等待用戶輸入痘煤,要么就干脆讀取失敗,上面我們演示了“繼續(xù)等待用戶輸入”的情形猿规,下面我們對代碼稍作修改衷快,演示“讀取失敗”的情形。

#include <stdio.h>

int main()

{

int a = 1, b = 2, c = 3, d = 4; //修改處:給變量賦予不同的初始值

scanf("%d", &a);

scanf("%d", &b);

printf("a=%d, b=%d\n", a, b);

scanf("%d %d", &c, &d);

printf("c=%d, d=%d\n", c, d);

return 0;

}

運行結(jié)果:

12 60 a10↙

a=12, b=60

c=3, d=4

前兩個整數(shù)被正確讀取后姨俩,剩下了 a10烦磁,而第三個 scanf() 要求輸入兩個十進制的整數(shù),a10 無論如何也不符合要求哼勇,所以只能讀取失敗都伪。輸出結(jié)果也證明了這一點,c 和 d 的值并沒有被改變积担。

這說明 scanf() 不會跳過不符合要求的數(shù)據(jù)陨晶,遇到不符合要求的數(shù)據(jù)會讀取失敗,而不是再繼續(xù)等待用戶輸入帝璧。

總而言之先誉,正是由于緩沖區(qū)的存在,才使得我們能夠多輸入一些數(shù)據(jù)的烁,或者一次性輸入所有數(shù)據(jù)褐耳,這可以認為是緩沖區(qū)的一點優(yōu)勢。然而渴庆,緩沖區(qū)也帶來了一定的負面影響铃芦,甚至會導致很奇怪的行為,請看下面的代碼:

#include <stdio.h>

int main()

{

int a = 1, b = 2;

scanf("a=%d", &a);

scanf("b=%d", &b);

printf("a=%d, b=%d\n", a, b);

return 0;

}

輸入示例:

a=99↙

a=99, b=2

輸入a=99襟雷,按下回車鍵刃滓,程序竟然運行結(jié)束了,只有第一個 scanf() 成功讀取了數(shù)據(jù)耸弄,第二個 scanf() 仿佛沒有執(zhí)行一樣咧虎,根本沒有給用戶任何機會去輸入數(shù)據(jù)。

如果我們換一種輸入方式呢计呈?

a=99b=200↙

a=99, b=200

這樣 a 和 b 都能夠正確讀取了砰诵。注意,a=99b=200中間是沒有任何空格的捌显。

肯定有好奇的小伙伴又問了茁彭,如果a=99b=200兩個數(shù)據(jù)之間有空格又會怎么樣呢?我們不妨親試一下:

a=99 b=200↙

a=99, b=2

你看苇瓣,第二個 scanf() 又讀取失敗了尉间!在前面的例子中,輸入的兩份數(shù)據(jù)之前都是有空格的呀,為什么這里不能帶空格呢哲嘲,真是匪夷所思贪薪。好吧,這個其實還是跟緩沖區(qū)有關(guān)系眠副,我將在《結(jié)合C語言緩沖區(qū)談scanf()函數(shù)》中深入講解画切。

要想破解 scanf() 輸入的問題,一定要學習緩沖區(qū)囱怕,它能使你對輸入輸出的認識上升到一個更高的層次霍弹,以后不管遇到什么疑難雜癥,都能迎刃而解娃弓〉涓瘢可以說,輸入輸出的“命門”就在于緩沖區(qū)台丛。

輸入其它數(shù)據(jù)

除了輸入整數(shù)耍缴,scanf() 還可以輸入單個字符、字符串挽霉、小數(shù)等防嗡,請看下面的演示:

#include <stdio.h>

int main()

{

char letter;

int age;

char url[30];

float price;

scanf("%c", &letter);

scanf("%d", &age);

scanf("%s", url); //可以加&也可以不加&

scanf("%f", &price);

printf("26個英文字母的最后一個是 %c。\n", letter);

printf("C語言中文網(wǎng)已經(jīng)成立%d年了侠坎,網(wǎng)址是 %s蚁趁,開通VIP會員的價格是%g。\n", age, url, price);

return 0;

}

運行示例:

z↙

6↙

http://c.biancheng.net↙

159.9↙

26個英文字母的最后一個是 z实胸。

C語言中文網(wǎng)已經(jīng)成立6年了他嫡,網(wǎng)址是 http://c.biancheng.net,開通VIP會員的價格是159.9童芹。

scanf() 和 printf() 雖然功能相反涮瞻,但是格式控制符是一樣的鲤拿,單個字符假褪、整數(shù)、小數(shù)近顷、字符串對應的格式控制符分別是 %c生音、%d、%f窒升、%s缀遍。

對讀取字符串的說明

在《在C語言中使用英文字符》一節(jié)中,我們談到了字符串的兩種定義形式饱须,它們分別是:

char str1[] = "http://c.biancheng.net";

char *str2 = "C語言中文網(wǎng)";

這兩種形式其實是有區(qū)別的域醇,第一種形式的字符串所在的內(nèi)存既有讀取權(quán)限又有寫入權(quán)限,第二種形式的字符串所在的內(nèi)存只有讀取權(quán)限,沒有寫入權(quán)限譬挚。printf()锅铅、puts() 等字符串輸出函數(shù)只要求字符串有讀取權(quán)限,而 scanf()减宣、gets() 等字符串輸入函數(shù)要求字符串有寫入權(quán)限盐须,所以,第一種形式的字符串既可以用于輸出函數(shù)又可以用于輸入函數(shù)漆腌,而第二種形式的字符串只能用于輸出函數(shù)贼邓。

另外,對于第一種形式的字符串闷尿,在[ ]里面要指明字符串的最大長度塑径,如果不指明,也可以根據(jù)=后面的字符串來自動推算填具,此處晓勇,就是根據(jù)"http://c.biancheng.net"的長度來推算的。但是在前一個例子中灌旧,開始我們只是定義了一個字符串绑咱,并沒有立即給它賦值,所以沒法自動推算枢泰,只能手動指明最大長度描融,這也就是為什么一定要寫作char url[30],而不能寫作char url[]的原因衡蚂。

讀者還要注意第 11 行代碼窿克,這行代碼用來輸入字符串。上面我們說過毛甲,scanf() 讀取數(shù)據(jù)時需要的是數(shù)據(jù)的地址年叮,整數(shù)、小數(shù)玻募、單個字符都要加&取地址符只损,這很容易理解;但是對于此處的 url 字符串七咧,我們并沒有加 &跃惫,這是因為,字符串的名字會自動轉(zhuǎn)換為字符串的地址艾栋,所以不用再多此一舉加 & 了爆存。當然,你也可以加上蝗砾,這樣雖然不會導致錯誤先较,但是編譯器會產(chǎn)生警告携冤,至于為什么,我們將會在《數(shù)組和指針絕不等價闲勺,數(shù)組是另外一種類型》《數(shù)組到底在什么時候會轉(zhuǎn)換為指針》中講解噪叙。

關(guān)于字符串,后續(xù)章節(jié)我們還會專門講解霉翔,這里只要求大家會模仿睁蕾,不要徹底理解,也沒法徹底理解债朵。

最后需要注意的一點是子眶,scanf() 讀取字符串時以空格為分隔,遇到空格就認為當前字符串結(jié)束了序芦,所以無法讀取含有空格的字符串臭杰,請看下面的例子:

#include <stdio.h>

int main()

{

char author[30], lang[30], url[30];

scanf("%s %s", author, lang);

printf("author:%s \nlang: %s\n", author, lang);

scanf("%s", url);

printf("url: %s\n", url);

return 0;

}

運行示例:

YanChangSheng C-Language↙

author:YanChangSheng

lang: C-Language

http://c.biancheng.net http://biancheng.net↙

url: http://c.biancheng.net

對于第一個 scanf(),它將空格前邊的字符串賦值給 author谚中,將空格后邊的字符串賦值給 lang渴杆;很顯然,第一個字符串遇到空格就結(jié)束了宪塔,第二個字符串到了本行的末尾結(jié)束了磁奖。

或許第二個 scanf() 更能說明問題,我們輸入了兩個網(wǎng)址某筐,但是 scanf() 只讀取了一個比搭,就是因為這兩個網(wǎng)址以空格為分隔,scanf() 遇到空格就認為字符串結(jié)束了南誊,不再繼續(xù)讀取了身诺。

scanf() 格式控制符匯總

格式控制符說明

%c讀取一個單一的字符

%hd、%d抄囚、%ld讀取一個十進制整數(shù)霉赡,并分別賦值給 short菌仁、int叠穆、long 類型

%ho蟹倾、%o漆诽、%lo讀取一個八進制整數(shù)(可帶前綴也可不帶),并分別賦值給 short糟袁、int景醇、long 類型

%hx、%x攒驰、%lx讀取一個十六進制整數(shù)(可帶前綴也可不帶),并分別賦值給 short故爵、int玻粪、long 類型

%hu隅津、%u、%lu讀取一個無符號整數(shù)劲室,并分別賦值給 unsigned short伦仍、unsigned int、unsigned long 類型

%f很洋、%lf讀取一個十進制形式的小數(shù)充蓝,并分別賦值給 float、double 類型

%e喉磁、%le讀取一個指數(shù)形式的小數(shù)谓苟,并分別賦值給 float、double 類型

%g协怒、%lg既可以讀取一個十進制形式的小數(shù)涝焙,也可以讀取一個指數(shù)形式的小數(shù),并分別賦值給 float孕暇、double 類型

%s讀取一個字符串(以空白符為結(jié)束)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仑撞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妖滔,更是在濱河造成了極大的恐慌隧哮,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件座舍,死亡現(xiàn)場離奇詭異近迁,居然都是意外死亡,警方通過查閱死者的電腦和手機簸州,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進店門鉴竭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岸浑,你說我怎么就攤上這事搏存。” “怎么了矢洲?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵璧眠,是天一觀的道長。 經(jīng)常有香客問我读虏,道長责静,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任盖桥,我火速辦了婚禮灾螃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揩徊。我一直安慰自己腰鬼,他們只是感情好嵌赠,可當我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著熄赡,像睡著了一般姜挺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上彼硫,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天炊豪,我揣著相機與錄音,去河邊找鬼拧篮。 笑死词渤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的他托。 我是一名探鬼主播掖肋,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赏参!你這毒婦竟也來了志笼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤把篓,失蹤者是張志新(化名)和其女友劉穎纫溃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體韧掩,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡紊浩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疗锐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坊谁。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滑臊,靈堂內(nèi)的尸體忽然破棺而出口芍,到底是詐尸還是另有隱情,我是刑警寧澤雇卷,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布鬓椭,位于F島的核電站,受9級特大地震影響关划,放射性物質(zhì)發(fā)生泄漏小染。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一贮折、第九天 我趴在偏房一處隱蔽的房頂上張望裤翩。 院中可真熱鬧,春花似錦脱货、人聲如沸岛都。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臼疫。三九已至,卻和暖如春扣孟,著一層夾襖步出監(jiān)牢的瞬間烫堤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工凤价, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸽斟,地道東北人。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓利诺,卻偏偏與公主長得像富蓄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子慢逾,可洞房花燭夜當晚...
    茶點故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,333評論 0 2
  • 第1章 第一個C程序第2章 C語言基礎第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設計第5章 條件結(jié)構(gòu)程序設計第6章...
    小獅子365閱讀 10,635評論 3 71
  • 專業(yè)考題類型管理運行工作負責人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,981評論 0 13
  • 數(shù)組在程序設計中侣滩,為了處理方便口注, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 3,905評論 2 13
  • scanf函數(shù)稱為格式輸入函數(shù)君珠,即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中寝志。 scanf函數(shù)的一般形式 ...
    日薄西山沙漠黃閱讀 10,214評論 0 5