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() 的语法是

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

scanf() 参数

scanf() 函数接受以下参数

  • format - 一个 C 字符串的指针,指定如何读取输入。它包含以 % 开头的格式说明符。
  • ... - 指定要打印数据的其他附加参数。它们按照格式说明符的顺序出现。

scanf() 返回值

  • 如果成功,它返回成功赋值的接收参数的数量。
  • 如果在赋值第一个接收参数之前发生匹配失败,则返回 0
  • 如果在赋值第一个接收参数之前发生输入失败,则返回 EOF

scanf() 原型

scanf() 函数的原型定义在 cstdio 头文件中,如下所示:

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

格式字符串

scanf()format 参数可以包含以 % 开头的格式说明符。格式字符串有以下部分:

  • 非空白字符 - 除 % 外,每个字符会消耗输入流中的一个相同字符。如果流中的下一个字符不匹配,则可能导致函数失败。
  • 空白字符 - 所有连续的空白字符被视为一个空白字符。此外,'\n''\t'' ' 被视为相同。
  • 转换说明 - 它遵循以下格式:
    • 开头的 % 字符,指定了开始。
    • 一个可选的 *,称为赋值抑制字符。如果存在此字符,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.

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战