0

我有一个char* buf[]which 打印时的样子(-1.20112344x-2.13413423):2。我需要提取intthis 里面的两个 s char* buf[],它们在里面()并由特殊字符分隔x。可能是正面的int或负面的(我举的例子是一个特定的案例)。

我在 Ubuntu 上使用 GCC 进行编译。考虑到我是如何编译的,请告诉我如何做到这一点。

4

1 回答 1

1

如果我正确理解您的问题,以下程序应该会有所帮助(根据 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.

于 2013-06-18T02:18:55.117 回答