float A, B; char str[] = "A0.5B0.7"; sscanf(str, "%s%f%s%f", &A, &B); printf("A = %f, B = %f", A, B);
时间: 2024-05-05 21:22:14 浏览: 6
这段代码有两个问题:
1. `%s` 格式化字符串会读取字符串中的一段字符,直到遇到第一个空格或者换行符为止。因此,这里 `%s` 会读取 `A0.5B0.7` 中的 `A0.5B0.7`,而不是单独的 `A`。
2. `%f` 格式化字符串会读取浮点数,但是需要传递一个指向浮点数变量的地址。因此,这里应该传递 `&A` 和 `&B`,而不是 `A` 和 `B`。
正确的代码应该是这样的:
```
float A, B;
char str[] = "A0.5B0.7";
sscanf(str, "A%fB%f", &A, &B);
printf("A = %f, B = %f", A, B);
```
这样就可以正确地读取 `A` 和 `B` 的值了。注意,这里把格式化字符串中的 `A` 和 `B` 直接写入了字符串中,而不是在运行时动态生成格式化字符串。
相关问题
sscanf(str, "%f", &data);
这是一个 C 语言中的函数调用,它的作用是将字符串 str 中的浮点数转换为实际的浮点数,并将结果存储在变量 data 中。
该函数的原型为:int sscanf(const char *str, const char *format, ...);
其中,第一个参数 str 是要被解析的字符串,第二个参数 format 是格式化字符串,后面的省略号表示可变参数列表,用于接收解析出来的数据。
需要注意的是,该函数返回值为成功匹配并赋值的输入项数,如果返回值小于参数个数,则表示解析失败。
用sscanf解析A0.5B0.7用c语言怎么写
可以使用以下代码进行解析:
```c
float A, B;
char str[] = "A0.5B0.7";
sscanf(str, "A%fB%f", &A, &B);
printf("A = %f, B = %f", A, B);
```
解析方式是通过格式化字符串来匹配输入字符串,其中 `%f` 表示读入一个浮点数,`A` 和 `B` 表示匹配字符串中的字母。这样就可以将字符串中的浮点数解析出来并存储到对应的变量中。