2013-06-12 175 views
0

在我寫的代碼中,我接收一個字符串,檢查它是否只包含十進制數字,然後將該字符串轉換爲int。但是,在我的代碼中,atoi返回0,而不是作爲int的字符串。有人能告訴我我在哪裏搞亂了嗎?atoi()一直返回0

while (!sucess || 0 == Entries){ 
    delete [] bufferptr; 
    buffer = nullptr; 
    buffer = new char [MAX]; 
    bufferptr = buffer; 

    cin.getline(buffer, MAX, '\n'); 


    while (*buffer){ 
    if (isdigit(*buffer++)){ 
     success = true; 
    } else { 
     success = false; 
     break; 
    } 
    } 
    if (success){ 
    numEntries = atoi(buffer); 
    cout << endl << numEntries << endl; 
    } 
    }  
+9

做一些調試,你願意嗎?堆棧溢出不是人力驅動的雲調試維修。 –

回答

4

請記住,與isdigit(*buffer++)你第一次調用isdigit*buffer值,然後通過一個遞增的指針。

if (isdigit(*buffer++))

這條線,你已經在字符數字後。

所以,當你不成功時你應該增加,當你成功時你應該增加。

...並如評論所示,嘗試自己做一些調試。你的錯誤是不是真的很難調試,即使有一些cout並沒有調試器等(嘗試在你插入cout << buffer << endl while循環