C 庫 - scanf() 函式



C 庫函式 scanf(const char *format, ...) 從標準輸入流(通常是鍵盤)讀取格式化輸入。

語法

以下是 C 庫函式 scanf() 的語法:

int scanf(const char *format, ...);

引數

此函式接受兩個引數:

  • format: 這是一個包含格式字串的 C 字串。格式字串指定預期輸入的型別,並由以 % 字元開頭的轉換說明組成。
  • ... :這些是與格式說明符相對應的附加引數。每個引數必須是指向一個變數的指標,已解析的輸入將儲存在該變數中。
序號 引數及說明
1

*

這是一個可選的起始星號,表示資料要從流中讀取但被忽略,即它不會儲存在相應的引數中。

2

寬度

這指定了當前讀取操作中要讀取的最大字元數。

3

修飾符

指定與相應附加引數指向的資料不同的 int(在 d、i 和 n 的情況下)、unsigned int(在 o、u 和 x 的情況下)或 float(在 e、f 和 g 的情況下)大小:h : short int(對於 d、i 和 n),或 unsigned short int(對於 o、u 和 x)l : long int(對於 d、i 和 n),或 unsigned long int(對於 o、u 和 x),或 double(對於 e、f 和 g)L : long double(對於 e、f 和 g)

4

型別

指定要讀取的資料型別以及預期讀取方式的字元。請參閱下表。

型別 限定輸入 引數型別
c 單個字元:讀取下一個字元。如果指定了與 1 不同的寬度,則該函式讀取寬度個字元並將它們儲存在作為引數傳遞的陣列的連續位置中。末尾不附加空字元。 char *
d 十進位制整數:前面可選地帶有一個 + 或 - 符號的數字 int *
e、E、f、g、G 浮點數:包含小數點的十進位制數,前面可選地帶有一個 + 或 - 符號,後面可選地帶有一個 e 或 E 字元和一個十進位制數。兩個有效條目的示例是 -732.103 和 7.12e4 float *
o 八進位制整數 int *
s 字元字串。這將讀取後續字元,直到找到空格(空格字元被認為是空格、換行符和製表符)。 char *
u 無符號十進位制整數。 unsigned int *
x、X 十六進位制整數 int *

返回值

scanf 函式返回一個整數值,該值指示成功匹配並賦值的輸入項數。如果輸入與格式說明符不匹配,或者在進行任何匹配之前到達輸入流的末尾,則 scanf 返回 EOF。

格式說明符

一些常見的格式說明符包括

  • %d 用於整數
  • %f 用於浮點數
  • %c 用於字元
  • %s 用於字串

示例 1:讀取整數

在這裡,我們提示使用者輸入一個整數,使用 scanf 讀取輸入,然後在成功讀取整數時列印該整數。

以下是 C 庫函式 scanf() 的示例。

#include <stdio.h>

int main() {
   int num;
   printf("Enter an integer: ");
   int result = scanf("%d", &num);

   if (result == 1) {
       printf("You entered: %d\n", num);
   } else {
       printf("Failed to read an integer.\n");
   }

   return 0;
}

輸出

以上程式碼產生以下結果:

Enter an integer: 23
You entered: 23

示例 2:讀取多個值

此示例從使用者讀取一個整數、一個浮點數和一個字元,並在成功讀取所有三個值時列印它們。

#include <stdio.h>

int main() {
   int age;
   float height;
   char initial;
   printf("Enter your age, height (in meters), and first initial: ");
   int result = scanf("%d %f %c", &age, &height, &initial);

   if (result == 3) {
       printf("You entered: Age = %d, Height = %.2f, Initial = %c\n", age, height, initial);
   } else {
       printf("Failed to read all values.\n");
   }

   return 0;
}

輸出

執行上述程式碼後,我們將得到以下結果:

Enter your age, height (in meters), and first initial: 26 180 R
You entered: Age = 26, Height = 180.00, Initial = R
廣告