選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C stdio scanf() 函式

❮ C stdio 庫


示例

輸出使用者輸入的數字

// 建立一個整數變數來儲存我們從使用者那裡獲取的數字
int myNum;

// 要求使用者輸入一個數字
printf("輸入一個數字: \n");

// 獲取並儲存使用者輸入的數字
scanf("%d", &myNum);

// 輸出使用者輸入的數字
printf("你輸入的數字是: %d", myNum);
自己動手試一試 »

定義和用法

scanf() 函式讀取使用者輸入並將之寫入引數指定的記憶體位置。

scanf() 函式定義在 <stdio.h> 標頭檔案中。

format 引數是一個字串,描述了期望的資料格式。如果使用者輸入與格式不匹配,函式將在第一個不匹配處停止讀取。

注意: 更準確地說,它從 stdin 指定的位置讀取,該位置通常是鍵盤輸入,但也可以配置為指向檔案或其他位置。

格式說明符

format 字串可以包含格式說明符,用於指定使用者輸入中哪些部分將被寫入引數。每個格式說明符對應於函式的一個附加引數。

格式說明符的格式為 %[*][width][length]specifier。方括號 [] 中的部分是可選的。

每個元件的解釋

  • * - 可選。當存在時,格式說明符不對應於引數。
  • width - 可選。指定此說明符最多讀取的字元數。
  • length - 可選。一個字元序列,改變引數的資料型別。它可以是以下之一
    • hh - 期望 char* 型別來表示整數。
    • h - 期望 short* 型別來表示整數。
    • l - 期望 long int* 型別來表示整數。
             期望 wchar_t* 型別來表示字元和字串。
             期望 double* 型別來表示浮點數。
    • ll - 期望 long long int* 型別來表示整數。
    • j - 期望 intmax_t*uintmax_t* 型別來表示整數。
    • z - 期望 size_t* 型別來表示整數。
    • t - 期望 ptrdiff_t* 型別來表示整數。
    • L - 期望 long double* 型別來表示整數。
  • specifier - 必需。一個字元或序列,指示如何解釋使用者輸入。可能的說明符列表如下表所示。

說明符列表

字元 說明符 描述
i 整數 讀取一系列數字並將它們解釋為整數。如果序列以 "0x" 開頭,則期望十六進位制數字(0-9 和 A-F)。如果序列以 "0" 開頭,則期望八進位制數字(0-7)。序列前面可以有一個符號("+" 或 "-")。
du 十進位制整數 讀取一系列數字(0-9)並將它們解釋為整數。序列前面可以有一個符號("+" 或 "-")。
o 八進位制整數 讀取一系列數字(0-7)並將它們解釋為八進位制整數。序列前面可以有一個符號("+" 或 "-")。
x 十六進位制整數 讀取一系列數字(0-9 和 A-F)並將它們解釋為十六進位制整數。它可以以 "0x" 開頭。序列前面可以有一個符號("+" 或 "-")。
f, e, ga 浮點數 讀取有效的字元序列並將其解釋為浮點數。有效序列至少有一個數字,前面可以有一個符號(“+”或“-”),後面可以跟一個小數點和十進位制數字。也可以使用科學記數法(一個數字後跟“e”或“E”和一些數字)。
c 字元 從檔案中讀取一個字元。如果指定了寬度,則讀取該數量的字元。
s 字串 從使用者輸入中讀取直到下一個空白字元(空格、製表符、換行符)的所有字元。寫入引數的值將附加一個額外的 \0 空終止符。
p 指標 讀取表示指標地址的一系列字元。
n 無輸入 不讀取任何內容,而是將到目前為止已讀取的字元數寫入引數。引數必須是指向整數的指標。
% 百分號 從使用者輸入中讀取一個字元,期望是一個 "%" 符號。此說明符不與引數關聯。
[字元集] 字元集 讀取一個字元,該字元與 characters 中指定的字元之一匹配。
[^字元集] 排除字元集 讀取一個字元,該字元不在 characters 中指定的字元集中。

有關如何使用格式說明符的示例,請參閱下面的更多示例


語法

scanf(const char * format, arg1, arg2...);

引數值

引數 描述
format 必需。一個字串,表示使用者輸入所期望的資料格式。
arg1, arg2... 可選。任意數量的附加引數,它們是指向可以寫入值的記憶體的指標。

技術詳情

返回 一個 int 值,表示已寫入的引數數量。如果發生錯誤,則返回常量 EOF

更多示例

示例

從使用者提供的任何序列 "a + b = c" 中提取數字

int a, b, c;
scanf("%i + %i = %i", &a, &b, &c);
printf("a = %d \n", a);
printf("b = %d \n", b);
printf("c = %d \n", c);

示例

讀取一個十六進位制數字並以十進位制輸出其值

int num;
scanf("%x", &num);
printf("%d", num);

示例

在使用者輸入中搜索 "x"、"y" 或 "z" 中的任意一個

char c;
int found = scanf("%[xyz]", &c);
if(found > 0) {
  printf("找到了 %c", c);
} else {
  printf("未找到字元");
}

❮ C stdio 庫

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援