ユーザーが入力した文字列の文字頻度を計算するプログラムを作成しました。それはすべての小文字に正しい出力を与えていますが、大文字では機能しません。コード内で問題を見つけることができません:Cで文字列の文字周波数を計算する
#include <stdio.h>
#include <string.h>
int main()
{
char string[100];
int c = 0, count[26] = {0};
printf("Enter a string\n");
fgets(string,100,stdin);
while(string[c] != '\n') {
c++;
}
string[c] = '\0';
c = 0;
while (string[c] != '\0')
{
/** Considering characters from 'a' to 'z' only
and ignoring others */
if (string[c] >= 'a' && string[c] <= 'z')
count[string[c]-'a']++;
else if(string[c] >= 'A' && string[c]<= 'Z')
count[string[c]-'A']++;
c++;
}
for (c = 0; c < 26; c++)
{
/** Printing only those characters
whose count is at least 1 */
if (count[c] != 0)
printf("%c occurs %d times in the entered string.\n",c+'a',count[c]);
}
return 0;
}
助けてください!
ここはスクリーンショットです。うまくいけば、私が直面していますどのような問題を理解する:
それは大文字を数えていません。 fgets()
末尾'\0'
を保証し、後であなたの小切手で優雅に'\n'
を扱うので、私が見ることができる
'(文字列[C] =「ながら\ n個! ') 'は危険です。ユーザーが100文字以上を入力した場合はどうなりますか? –
私はあなたの問題を再現できません - それは私のために正常に動作します。 –
ここでもうまく動作します。 – totoro