我有一个char* buf[]
which 打印时的样子(-1.20112344x-2.13413423):2
。我需要提取int
this 里面的两个 s char* buf[]
,它们在里面()
并由特殊字符分隔x
。可能是正面的int
或负面的(我举的例子是一个特定的案例)。
我在 Ubuntu 上使用 GCC 进行编译。考虑到我是如何编译的,请告诉我如何做到这一点。
如果我正确理解您的问题,以下程序应该会有所帮助(根据 paxdiablo 的评论进行编辑 - 使用double
而不是float
输入,并将结果返回到 8 个有效数字)。
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
.