2016-04-05 93 views
0

我的任務是計算C字符串中有多少個字符。輸入是由我無法訪問的測試驅動程序提供的,但我的功能應該訪問數據並確定從az和AZ有多少個字符,但我的程序保持失敗,我不確定我是什麼做錯了。搜索C字符串中有多少個字符

int countLetters(char * const line) 
{ 
    char index = *line; 
    int count; 

    while(!index) 
    { 
     if (index >= 'a' && index <= 'z') 
      count++; 

     if (index >= 'A' && index <= 'Z') 
      count++; 
    } 
    return count; 

} 

回答

0

試試這個

int countLetters(char * const line) 
{ 
    int index = 0; 
    int count = 0; 

    while(line[index]) 
    { 
     if (line[index] >= 'a' && line[index] <= 'z') 
      count++; 

     if (line[index] >= 'A' && line[index] <= 'Z') 
      count++; 

     index++; 
    } 
    return count; 
} 

這裏是你做了什麼錯
第一:你分配你的字符的索引= *線; 讓你指數的字符串,這是不對的第一個字符,因爲指數假設代表的位置,而不是字符
二:你沒有提供任何機制來增加索引在其他循環串
三:你沒有初始化計數變量

注:line[index]相同*(line + index)
line是一個指針,它指向第一個字符字符串中
所以line + index是指向該指數第n個字符字符串中
按前綴指針用*你說,我想知道,這個指針指向

+0

>嘗試初始化內容的指針計數= 0之前,你增加它 試過,差異是不是成千上萬的點擊我得到0返回。我不確定是否問題來自程序缺少NULL字符,或者如果我的if語句中的參數是錯誤的。大多數時候,我的返回值是千分之一,當它應該是〜50 – RyeMan

+0

你需要以某種方式增加你的索引每個循環 – rocketspacer

+0

確定如此完美,它的工作,但由於某種原因,它是每次-1。我改變了'code' while(line(index ++)+ 1])''代碼'它修復了它,但我不完全理解爲什麼會發生這種情況。 – RyeMan