`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`。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值