在本教程中,我們將借助示例了解 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 |
匹配一個無符號八進製整數 |
X 或 x |
匹配無符號十六進製整數 |
u |
匹配無符號十進製整數 |
A 或 a |
匹配一個浮點數 |
E 或 e |
匹配一個浮點數 |
F 或 f |
匹配一個浮點數 |
G 或 g |
匹配一個浮點數 |
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++ scalbln()用法及代碼示例
- C++ scalbn()用法及代碼示例
- C++ std::max()用法及代碼示例
- C++ std::string::push_back()用法及代碼示例
- C++ std::less_equal用法及代碼示例
- C++ set rbegin()用法及代碼示例
- C++ string::length()用法及代碼示例
- C++ set upper_bound()用法及代碼示例
- C++ set crbegin用法及代碼示例
- C++ std::is_member_object_pointer模板用法及代碼示例
- C++ std::copy_n()用法及代碼示例
- C++ std::string::insert()用法及代碼示例
- C++ std::is_sorted_until用法及代碼示例
- C++ std::iota用法及代碼示例
- C++ set size用法及代碼示例
- C++ std::numeric_limits::digits用法及代碼示例
- C++ sscanf()用法及代碼示例
- C++ std::string::data()用法及代碼示例
- C++ smatch max_size()用法及代碼示例
- C++ std::is_permutation用法及代碼示例
注:本文由純淨天空篩選整理自 C++ scanf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。