2

我需要帮助从字符中提取数字。可以说我有:

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 前面获得负数?

4

2 回答 2

2

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

if ((p[0] == '-' && isdigit(p[1]))|| isdigit(p[0])) ...
于 2013-02-18T22:03:38.947 回答
0
  while (*p) {
       if (isdigit(*p) || ( (*p == '-' || *p == '+')  && isdigit(*(p+1)) )) {
           int val = strtol(p, &p, 10);
           on_int(val);
       } else {
           p++;
       }
   }
于 2013-02-18T22:13:23.880 回答