2016-04-04 43 views
0

試圖解決由教師提供的問題之一,並且我無法正確理解如何正確調用此功能。使用cctype庫搜索功能以查找範圍中數字的字符數

我收到了一個鏈接到測試驅動程序的函數,我的目標是使用cstring庫在隨機生成的字符串對象中使用此函數查找0-9範圍內的任何數字。

int countDigits(char * const line) {return 0;} 

到目前爲止,這是我:

int countDigits(char * const line) 
{ 

    int i, index; 

    index = -1; 
    found = false; 
    i = 0; 
    while (i < *line && !found) 
    { 
     if (*line > 0 && *line < 9) 
      index++; 
    } 
    return 0; 
} 

我的代碼不是很大而且目前只會導致一個無限循環和失敗,任何幫助將是非常讚賞。

回答

2

嗯,你的功能有幾個問題。

  • 你想讓它返回的位數,但在任何情況下
  • found是從來沒有設置任何比假,則返回0,因此從停止
  • 也比較i<*line確實禁止while循環對我來說沒什麼意義,我想你想檢查一下行結束。也許你想尋找一個空終止「\ 0」(這裏i再也不會設置爲0以外的任何東西)
  • 如果你想比較單個字符,你應該查找你的字符ASCII code正在比較(數字0-9不等於代碼0-9)

希望這是一個開始提高你的功能。

+0

IMO,這是細節的這樣一個問題,幾乎完美的程度 - 提供有關如何編寫代碼,而不只是提供指導預寫碼。做得好。 –

+0

是的我的代碼有點災難性哈哈,但是感謝你指引我朝着正確的方向發展,並找到了實現它所需要的功能。以下是修改後的代碼的樣子: int countDigits(char * const line) { char index = * line; int count; (指數) if(index> 48 && * line <57) count ++; while(!index) if } return count; } – RyeMan

+0

很高興能幫到你! –

1

有這個叫做count_if一個現成的: -

count_if(begin, end, [](char c){ return isdigit(c);});