在本教程中,我们将借助示例了解 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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。