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

Extract int from char* containing special character in Ubuntu gcc

本文关键字:提取 int char 包含 特殊字符      更新时间:2023-10-16

我有一个char* buf[],当打印时看起来像(-1.20112344x-2.13413423):2。我需要在这个char* buf[]中提取两个int,它们在()中,用特殊字符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 %.8lfn", a, b);
}

运行时,返回

a is -1.20112344; b is -2.13413423

sscanf函数按照给定的格式扫描字符串中的数字-在本例中,格式字符串" (%lfx%lf"表示:"跳过空格开括号(,然后读取双精度%lf,将结果放入a: &a地址所指向的位置(即将结果放入a)。跳过x,然后找到另一个double并将结果存储在b中。