当前位置: 首页 > news >正文

`sscanf` 和 `scanf` 的区别

`sscanf` 和 `scanf` 都是 C 语言中用于从字符串中读取格式化输入的函数,但它们的主要区别在于输入源的不同。

1、### scanf


`scanf` 函数用于从标准输入(通常是键盘)读取格式化的输入。它的原型如下:
```int scanf(const char *format, ...)```
**参数**:
- `format`:一个格式字符串,指定要读取的数据类型和格式。
- `...`:可变参数列表,指向存储读取数据的变量的指针。

**返回值**:
- 成功读取的输入项数。
- 如果在遇到任何输入之前遇到文件结束标记或读取错误,则返回 EOF。

**示例**:
```c
#include <stdio.h>

int main() {
    int num;
    float fnum;
    char str[100];

    printf("Enter an integer, a float and a string: ");
    scanf("%d %f %s", &num, &fnum, str);

    printf("You entered: %d, %.2f, %s\n", num, fnum, str);
    return 0;
}
```
在这个示例中,`scanf` 从键盘读取一个整数、一个浮点数和一个字符串。

2、### sscanf


`sscanf` 函数用于从指定的字符串读取数据。它的原型如下:
```c
int sscanf(const char *str, const char *format, ...);
```
**参数**:
- `str`:要解析的字符串。
- `format`:一个格式字符串,指定要读取的数据类型和格式。
- `...`:可变参数列表,指向存储读取数据的变量的指针。

**返回值**:
- 成功读取的输入项数。
- 如果在遇到任何输入之前遇到文件结束标记或读取错误,则返回 EOF。

**示例**:
```c
#include <stdio.h>

int main() {
    int num;
    float fnum;
    char str[] = "123 45.67 hello";

    sscanf(str, "%d %f %s", &num, &fnum, str);

    printf("You entered: %d, %.2f, %s\n", num, fnum, str);
    return 0;
}
```
在这个示例中,`sscanf` 从字符串 `"123 45.67 hello"` 中读取一个整数、一个浮点数和一个字符串。

3、### 总结


- `scanf` 从标准输入读取数据。
- `sscanf` 从一个给定的字符串读取数据。
- 两者的格式字符串和返回值相同,但输入源不同。

选择使用 `scanf` 还是 `sscanf` 取决于你需要从哪里读取数据。如果数据来自用户输入,使用 `scanf`;如果数据来自一个字符串,使用 `sscanf`。

相关文章:

  • 磁盘清理工具-TreeSize Free介绍
  • 使用 QR-Code-Styling 在 Vue 3 中生成二维码
  • 【004安卓开发方案调研】之Ionic+Vue+Capacitor开发安卓
  • Z型隶属函数(Z-shaped Membership Function)的详细介绍及python示例
  • logisim安装以及可能出现的问题
  • _KiComputeTimerTableIndex函数分析
  • Excel筛选填充的正确方法
  • 在 Ubuntu 20.04 上重新启动网络
  • 掌握新编程语言的秘诀:利用 AI 快速上手 Python、Go、Java 和 Rust
  • 蓝桥杯真题 3513.岛屿个数
  • doris:时区管理
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.22)
  • 鱼书--学习2
  • Python入门基础
  • 【数据分享】2000—2024年我国省市县三级逐年归一化植被指数(NDVI)数据(年平均值/Shp/Excel格式)
  • MySQL数据库精研之旅第二期:库操作的深度探索
  • 计算机基础:编码04,认识反码和补码
  • 深度学习3-pytorch学习
  • python学习笔记--实现简单的爬虫(二)
  • AutoImageProcessor代码分析
  • 美国鞋类巨头请求白宫豁免关税,称已构成“生存威胁”
  • 4月一二线城市新房价格环比上涨,沪杭涨幅居百城前列
  • 万科:一季度营收近380亿元,销售回款率超100%
  • 【社论】人工智能,年轻的事业
  • 五月院线片单:就看五一档表现了
  • 金科股份:去年营收约275亿元,今年确保所有项目“零烂尾”