sscanf和scanf有什么区别
时间: 2023-07-25 21:06:49 浏览: 76
`sscanf()`和`scanf()`都是C语言中的输入函数。它们的区别在于:
1. `scanf()` 从 `stdin` (标准输入流)中读取输入,而 `sscanf()` 从一个字符串中读取输入。
2. `scanf()` 返回成功读取的数据项数,而 `sscanf()` 返回成功赋值的数据项数。
3. `scanf()` 在读取输入时,会跳过空格符、制表符和换行符等空白字符,而 `sscanf()` 不会跳过空格符等空白字符。
例如,假设有一个字符串`str`,内容为`"hello 123"`,我们可以使用`sscanf()`和`scanf()`从中读取字符串和整数:
```c
char str[] = "hello 123";
char string[10];
int num;
sscanf(str, "%s %d", string, &num);
printf("string = %s, num = %d\n", string, num);
scanf("%s %d", string, &num);
printf("string = %s, num = %d\n", string, num);
```
输出结果为:
```
string = hello, num = 123
hello
123
string = hello, num = 123
```
可以看到,`sscanf()`从字符串中读取了两个数据项,而`scanf()`从标准输入流中读取了两个数据项,但在读取字符串时,`scanf()`会将空格符作为字符串的结束符,因此输出的字符串只包含了hello这个单词。
阅读全文