我有char* buf[]
,打印时看起来像(-1.20112344x-2.13413423):2
。我需要在int
内提取char* buf[]
内的两个()
,它们位于x
内,并由特殊字符int
分隔。 {{1}}可能是正面的也可能是负面的(我举例说明的是具体情况)。
我正在Ubuntu上使用GCC进行编译。考虑我是如何编译的,请告诉我如何这样做。
答案 0 :(得分:1)
如果我理解你的问题,下面的程序应该有所帮助(编辑后跟着paxdiablo评论 - 使用double
而不是float
类型,并将结果返回到8位有效数字。/ p>
include <stdio.h>
int main(void) {
char* s=" (-1.20112344x-2.13413423):2 ";
double a, b;
sscanf(s, " (%lfx%lf", &a, &b);
printf("a is %.8lf; b is %.8lf\n", a, b);
}
运行时,返回
a is -1.20112344; b is -2.13413423
sscanf
函数按照给定的格式扫描字符串中的数字 - 在这种情况下,格式字符串" (%lfx%lf"
说:“跳过空格 - 开括号(
,然后读取一个双%lf
,将结果放在a &a
地址指向的位置(即将结果放入a
)。跳过x
,然后找到另一个双倍并将结果存储在b
。