如何从字符串中提取负数

时间:2013-02-18 22:01:22

标签: c

我需要帮助从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的负面影响?

2 个答案:

答案 0 :(得分:2)

您应该更改条件以适应减号,如下所示:

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

答案 1 :(得分:0)

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