从包含Ubuntu gcc中的特殊字符的char *中提取int

时间:2013-06-18 02:11:02

标签: c++ extract

我有char* buf[],打印时看起来像(-1.20112344x-2.13413423):2。我需要在int内提取char* buf[]内的两个(),它们位于x内,并由特殊字符int分隔。 {{1}}可能是正面的也可能是负面的(我举例说明的是具体情况)。

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

1 个答案:

答案 0 :(得分: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