2013-02-18 127 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++; 
     } 
    }