2016-04-05 9 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; 
} 

は、ここでは、まず
間違ってやったことだ試してみてください:あなたはあなたのcharインデックス= *ラインを割り当てます。あなたは、文字列
第3のループに他のインデックスを増加させるための任意のメカニズムを提供didntは: は、あなたのインデックスインデックスは位置を表すために仮定しているため、間違っている文字列の最初の文字、いない文字
セカンド作ります:*(line + index)
あなたlineは、文字列の最初の文字をポイント
ポインタであるとline[index]が同じである:
あなたは、カウント変数

注意を初期化するのdidntだからline + index *あなたは、私がこのポインタポイントに

+0

>初期化してくださいという内容を知りたいことを言っている
でポインタを接頭辞文字列にインデックスn番目の文字を指すポインタでありますあなたがそれを増やす前にカウント= 0 それを試してみて、何千ものヒットの代わりに0が返されました。問題がNULL文字が欠けているプログラムから来ているのか、私のif文のパラメータが間違っているのか分かりません。ほとんどの時間私の戻り値は~50でなければなりません。 – RyeMan

+0

何とか各ループのインデックスを増やす必要があります – rocketspacer

+0

これは完璧です、それは働いていますが何らかの理由で毎回-1です。コードを修正した 'code'(line(index ++)+ 1))' code'を変更しましたが、なぜそれが起こっているのか完全に理解していません。 – RyeMan