當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ scanf()用法及代碼示例


在本教程中,我們將借助示例了解 C++ scanf() 函數。

C++ 中的 scanf() 函數用於從標準輸入 (stdin) 讀取數據。讀取的數據存儲在各個變量中。

它在cstdio 頭文件中定義。

示例

#include <cstdio>
#include <iostream>
using namespace std;

int main() {
  int age;

  cout << "Enter your age: ";

  // get age from user
  scanf("%d", &age);

  // print age
  cout << "Age = " << age;
    
  return 0;
}

輸出

Enter your age: 39
Age = 39

scanf() 語法

用法:

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

參數:

scanf() 函數采用以下參數:

  • format- 指向指定如何讀取輸入的C-string 的指針。它由以開頭的格式說明符組成%.
  • ...- 指定要打印的數據的其他附加參數。它們根據格式說明符按順序出現。

返回:

  • 如果成功的,它返回成功分配的接收參數的數量。
  • 如果一個匹配失敗在分配第一個接收參數之前發生,返回0.
  • 如果輸入失敗在分配第一個接收參數之前發生,EOF被退回。

scanf() 原型

cstdio 頭文件中定義的scanf() 函數的原型是:

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

格式化字符串

format參數scanf()可以包含格式說明符開始於%.格式字符串包含以下部分:

  • 非空白字符除了%每個都從輸入流中消耗一個相同的字符。如果流中的下一個字符比較不相等,可能會導致函數失敗。
  • 空白字符- 所有連續的空白字符都被視為單個空白字符。進一步,'\n','\t'' '被認為是相同的。
  • 轉換規範- 它遵循以下格式:
    • 指定開頭的初始 % 字符。
    • 一個可選的*assignment-suppression 字符.如果這個角色存在,scanf()不將結果分配給任何接收參數。
    • width - 一個可選的正整數,指定最大字段寬度。它指定scanf() 在進行當前轉換規範指定的轉換時允許使用的最大字符數。
    • length - 一個可選的長度修飾符,指定接收參數的大小。
    • specifier - 轉換格式說明符。
  • ... - 用於接收數據的其他附加參數。它們根據格式說明符按順序出現。

scanf() 格式說明符原型

scanf() 的格式說明符的一般格式為:

%[*][width][length]specifier

通用格式說明符

格式說明符 說明
% 匹配文字%
c - 匹配單個字符或多個字符
- 如果width已定義,它完全匹配width字符
s - 匹配連續的非空白字符
- 如果width已定義,完全匹配width字符或直到找到第一個空格
[set] - 匹配給定字符集中的非空字符序列
- 如果^出現在開頭set, 那麽所有不在的字符set匹配
d 匹配十進製整數
i 匹配一個整數
o 匹配一個無符號八進製整數
Xx 匹配無符號十六進製整數
u 匹配無符號十進製整數
Aa 匹配一個浮點數
Ee 匹配一個浮點數
Ff 匹配一個浮點數
Gg 匹配一個浮點數
n 返回到目前為止讀取的字符數
p 匹配定義指針的實現定義的字符序列

示例:C++ scanf()

#include <cstdio>

int main () {
  char name[50];
  int age;
    
  printf("Enter your name: ");

  // get user input for name
  scanf("%s", name);

  printf("Enter your age: ");

  // get user input for age
  scanf("%d", &age);

  // print name and age
  printf("Hello %s, you are %d years old.", name, age);

  return 0;
}

輸出

Enter your name: Tim
Enter your age: 31
Hello Tim, you are 31 years old.

相關用法


注:本文由純淨天空篩選整理自 C++ scanf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。