sscanf和sprintf函数返回值
时间: 2025-06-01 09:07:26 浏览: 15
### sscanf 和 sprintf 函数的返回值及用法解释
#### 1. `sscanf` 函数
`sscanf` 是 C 标准库 `<stdio.h>` 提供的一个函数,用于从字符串中读取格式化数据。其功能类似于 `scanf`,但数据来源是字符串而非标准输入。
##### 函数原型
```c
int sscanf(const char *str, const char *format, ...);
```
- **参数**:
- `str`:指向要解析的字符串。
- `format`:指定输入项的格式说明符。
- `...`:可变参数列表,用于存储从字符串中提取的数据。
- **返回值**:
- 返回成功读取并赋值的项数[^3]。
- 如果没有成功读取任何数据,则返回 `0`。
- 如果发生错误(例如格式不匹配或内存不足),则返回 `EOF`(即 `-1`)[^3]。
##### 示例代码
```c
#include <cstdio>
int main() {
const char* str = "10 20";
int a, b;
int count = sscanf(str, "%d %d", &a, &b);
printf("读入的项数: %d\n", count); // 输出: 读入的项数: 2
printf("a = %d, b = %d\n", a, b); // 输出: a = 10, b = 20
return 0;
}
```
#### 2. `sprintf` 函数
`sprintf` 是 C 标准库 `<stdio.h>` 提供的一个函数,用于将格式化的数据写入字符串缓冲区。其功能类似于 `printf`,但输出目标是字符串而非标准输出。
##### 函数原型
```c
int sprintf(char *str, const char *format, ...);
```
- **参数**:
- `str`:指向存储结果字符串的缓冲区。
- `format`:指定输出项的格式说明符。
- `...`:可变参数列表,用于提供要格式化的数据。
- **返回值**:
- 返回写入缓冲区的字符数(不包括终止的空字符 `\0`)[^2]。
- 如果发生错误,则返回负值。
##### 示例代码
```c
#include <cstdio>
int main() {
char buffer[50];
int ret = sprintf(buffer, "Value: %d, Text: %s", 42, "Example");
printf("写入的字符数: %d\n", ret); // 输出: 写入的字符数: 20
printf("生成的字符串: %s\n", buffer); // 输出: Value: 42, Text: Example
return 0;
}
```
#### 注意事项
- 使用 `sscanf` 时,确保提供的字符串格式与格式说明符匹配,否则可能导致未定义行为。
- 使用 `sprintf` 时,确保目标缓冲区足够大以容纳生成的字符串,否则可能导致缓冲区溢出[^2]。
---
###
阅读全文
相关推荐


















