C - 使用者輸入:初學者指南

你好,未來的程式設計師們!今天,我們將要深入C程式設計中令人興奮的使用者輸入世界。作為你們友好的鄰居電腦老師,我將指導你們走過這段旅程,一步一步。所以,拿起一杯咖啡(或你喜歡的飲料),我們開始吧!

C - User Input

我們為什麼需要在C中使用使用者輸入?

想像你正在創建一個計算器程序。如果它只能計算2加2,那它會相當無用,對吧?這就是使用者輸入派上用場的地方!使用者輸入讓我們的程序能夠動態和互動。我們的程序不再總是做同樣的事情,而是可以根據不同的輸入產生不同的結果。

魔法棒:scanf() 函數

在C中,我們捕獲使用者輸入的魔法棒是 scanf() 函數。它就像一個網,捕獲用戶輸入到程序中的信息。讓我們來分解一下:

#include <stdio.h>

int main() {
int number;
printf("輸入一個數字: ");
scanf("%d", &number);
printf("你輸入了: %d\n", number);
return 0;
}

在這個例子中:

  1. 我們聲明了一個 int 型別的變量 number
  2. 我們提示用戶輸入一個數字。
  3. 我們使用 scanf() 捕獲輸入並將其存儲在 number 中。
  4. 最後,我們將數字打印回給用戶。

scanf() 中的 %d 告訴函數:"在這裡期待一個整數!" number 前面的 & 表示:"在這個記憶地址存儲輸入"。

輸入類型:讓我們一起探討!

整數輸入

我們已經看到了如何輸入整數。讓我們試一個更複雜的例子:

#include <stdio.h>

int main() {
int age, year;
printf("輸入你的年齡和出生年份: ");
scanf("%d %d", &age, &year);
printf("你 %d 歲,並出生於 %d 年。\n", age, year);
return 0;
}

在這裡,我們一次性捕獲了兩個整數!%d %d 之間的空格告訴 scanf() 在輸入之間期待一個空格或換行。

浮點數輸入

如果我們想要小數呢?那就使用浮點數!

#include <stdio.h>

int main() {
float height, weight;
printf("輸入你的身高(公尺)和體重(公斤): ");
scanf("%f %f", &height, &weight);
printf("你身高 %.2f 公尺,體重 %.1f 公斤。\n", height, weight);
return 0;
}

注意浮點數使用 %f。在輸出中,.2f.1f 控制小數位數。

字符輸入

有時,我們只需要一個字符:

#include <stdio.h>

int main() {
char grade;
printf("輸入你的成績(A-F): ");
scanf(" %c", &grade);  // 注意 %c 之前的空格
printf("你得到了 %c。 ", grade);

if (grade == 'A' || grade == 'B')
printf("做得很好!\n");
else if (grade == 'C')
printf("不錯,持續進步!\n");
else
printf("下次我們要更努力!\n");

return 0;
}

%c 之前的空格非常關鍵!它告訴 scanf() 在讀取字符之前跳過任何空白(如換行)。

字符串輸入

最後但同樣重要的是,讓我們捕獲一整個字符串:

#include <stdio.h>

int main() {
char name[50];  // 用於存儲字符串的數組
printf("你叫什麼名字? ");
scanf("%49s", name);  // %49s 以防止緩衝區溢出
printf("你好,%s!歡迎來到C程式設計!\n", name);
return 0;
}

需要注意的幾點:

  1. 我們使用字符數組來存儲字符串。
  2. scanf() 中的 name 前不需要 &,因為數組名已經是地址。
  3. %49s 限制了輸入為49個字符,防止緩衝區溢出。

scanf() 函數:更深入的了解

讓我們總結我們已經見過的不同格式指定符:

格式指定符 數據類型
%d 整數
%f 浮點數
%c 字符
%s 字符串

記住,scanf() 非常強大但也可能很棘手。總是檢查輸入是否成功:

#include <stdio.h>

int main() {
int num;
printf("輸入一個數字: ");
if (scanf("%d", &num) == 1) {
printf("你輸入了: %d\n", num);
} else {
printf("無效的輸入!\n");
}
return 0;
}

這檢查 scanf() 是否成功讀取了一個值(== 1)。

總結

呼!我們今天學了很多。從整數到字符串,我們探討了如何讓我們的C程序互動。記住,熟練需要練習。試著在你的程序中結合不同類型的輸入。也許創建一個問玩家名字、年齡和喜歡的數字的簡單遊戲?

編程就像學習一門新語言 - 使用得越多,就越自然。所以,持續編碼,持續嘗試,最重要的是,玩得開心!如果你遇到困難,記住每個程式設計師都曾經是初學者。不要害怕提問題和尋求幫助。

直到下次,快樂編程!

Credits: Image by storyset