在本篇教學中,我們要教大家如何從主控台中取得玩家輸入的字串。
===============
原理解說:
- 標準C函式庫(library, 簡稱lib)中,經典輸入輸出函數都存放在<stdio.lib>中;透過在程式的開端以#include <stdio.h>指令,即可使用經典輸入輸出函數。
- 經典C函式輸入輸出函數:
A. 輸出函數printf()
B. 輸入函數scanf() - 掌握了scanf()之後,我們再多學習一個函數:getchar()。getchar()提供了一個便捷的字元輸入方式,非常的好用。
* 請注意,本節使用的stdio函式庫都是標準C函式庫。C++系列另有一套更簡便的輸入輸出函式庫稱為iostream。
===============
STEP #1:
打開VC++ 2008 Express,開啟前節專案(project)或是新造一個專案。
開啟main.cpp程式檔,將程式內容修改為下:
#include <stdio.h> void main(){ char inChar = 'a'; printf("您好,\n"); printf("inChar的內容值目前為: %c \n", inChar); }
按CTRL+F5運行,可看到以下畫面:
程式解說:
- #4行為變數宣告。在此我們宣告了一個字元(char)變數,其名為inChar,初始值為字元'a'。要注意的是字元變數僅能儲存一個字元。
- 我們可以發現以下的事情:
- printf()有兩種不一樣的格式:
- A. printf("輸出字串");
- B. printf("輸出字串%c", 字元變數);
- 其中,內埋在字串中的%c,意指將第二個參數視為字元變數,並具體呈現出插進字串的位置。
*請確實吸收這兩種不同格式的printf()用法,之後進行下一步。
STEP #2:
將main.cpp的內容修改如下:
*請注意,#9行使用了新的函數scanf(),請確實輸入一次#9行,並注意到該行尾端的inChar變數前方有個&符號(and)!
*請注意,#9行使用了新的函數scanf(),請確實輸入一次#9行,並注意到該行尾端的inChar變數前方有個&符號(and)!
#include <stdio.h> void main(){ char inChar = 'a'; printf("您好,\n"); printf("inChar的內容值目前為: %c \n", inChar); printf("請輸入新的字元,輸入完畢請按Enter鍵\n"); scanf("%c",&inChar); printf("更新後的inChar的內容值為: %c \n", inChar); }
程式解說:
- #9行是典型的以scanf進行單字元輸入語句。第一個參數"%c"代表將使用者的輸入視為字元character。第二個參數代表將獲得的字元存入inChar的記憶體位置上。
- 由上我們可以知:在程式中,inChar指的是inChar變數內容值;而&inChar指的是inChar變數的記憶體位置。有沒有那個&符號是相差非常大的。
- 注意scanf()的第二個參數一定要加上&符號,否則程式運行會報錯。
測試一下,確認字元輸入與字串輸出功能正常。
STEP #3:
修改程式碼:
*此處使用兩撇斜線(slash,注意是從右上畫到左下),也就是單行註解格式,將#9行註解掉。如此一來#9行就不會執行。
程式解說:
運行一下,確認功能與前面的做法相同。完工!
===================
這節課我們學會了字元的輸入,在下一節課中,我們會使用你會的東西來製作<文字冒險AVG>遊戲,敬請期待!
修改程式碼:
*此處使用兩撇斜線(slash,注意是從右上畫到左下),也就是單行註解格式,將#9行註解掉。如此一來#9行就不會執行。
#include <stdio.h> void main(){ char inChar = 'a'; printf("您好,\n"); printf("inChar的內容值目前為: %c \n", inChar); printf("請輸入新的字元,輸入完畢請按Enter鍵\n"); //scanf("%c",&inChar); inChar = getchar(); printf("更新後的inChar的內容值為: %c \n", inChar); }
程式解說:
- getchar()函數可讓玩家從主控台輸入一個字元,並將輸入的字元返還(return)回來。
- 使用inChar = getchar(),即可使用inChar承接前述返還回來的字元。注意這裡不需要再加&符號了。
運行一下,確認功能與前面的做法相同。完工!
===================
這節課我們學會了字元的輸入,在下一節課中,我們會使用你會的東西來製作<文字冒險AVG>遊戲,敬請期待!