2013-02-18 30 views
2

我需要帮助从char中提取数字。 可以说我有:如何从字符串中提取负数

char str = " (1 22 -4)"; 

我需要提取的每一整数及调用另一个方法。

while (*p) { 
    if (isdigit(*p)) { 
     int val = strtol(p, &p, 10); 
     on_int(val); 
    } else { 
     p++; 
    } 
} 

我已经提取了整数成功,但我不知道如何提取底片。

有了这段代码,我已经提取了1,22和4.我如何得到4的负面盈亏?

+0

我不明白的问题,到底 - 如果第一个字符是“ - ”,你能不能乘你的结果是-1?然而,这开始讨论是否允许 - 4, - 4等作为输入的问题。 – Kirby 2013-02-18 22:05:40

+0

感谢格式帮助!我无法弄清楚! – dLiGHT 2013-02-18 22:08:25

+0

格式只是[markdown](http://stackoverflow.com/editing-help)。 – 2013-02-18 22:09:15

回答

2

你应该改变的条件,以适应负,这样的:

if ((p[0] == '-' && isdigit(p[1]))|| isdigit(p[0])) ... 
+0

哇,谢谢!我根本想不起来! – dLiGHT 2013-02-18 22:06:09

+2

说'if((* p ==' - '&& isdigit(p [1]))|| isdigit(* p))'可能会更简单一些。这样你就不必比较结束指针了。 – 2013-02-18 22:08:17

+0

@KevinBallard你说得对,即使在最后的位置,它也能工作!这现在已更新。谢谢! – dasblinkenlight 2013-02-18 22:09:25

0
while (*p) { 
     if (isdigit(*p) || ((*p == '-' || *p == '+') && isdigit(*(p+1)))) { 
      int val = strtol(p, &p, 10); 
      on_int(val); 
     } else { 
      p++; 
     } 
    }