当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。