我試圖顯示哪個字符以及它們中的每個字符在用戶選擇的句子中有多少個。所以如果用戶放入「Hello World!」程序應該返回一個字符和它使用的次數。統計數組中有多少個字符
" SPACE:1, !:1, H:1, W:1, e:1, d:1, l:3, o:2, r:1,"
我有它在開關,因爲我有其他選擇,用戶可以選擇。
現在我可以弄清楚使用什麼字符,它們中有多少是從空間到Q.我也可以把所有的小寫字母都去掉,但是如果它讀出一個'a',它會說有1' a'和一個SPACE(用ASCII碼從32開始,隨着小字母的增加而上升)。
這些是我使用的變量。
int menyval = 0, i, k = 0, h, j, count, count2;
char input, str[100], getridof, add, character;
這是我在這種情況下。
printf("Write a string not more then 50 chars:\n");
getchar();
i = 0;
j = 0;
count = 0;
int counts[50] = { 0 };
gets(str);
str[j] = str[i];
while (str[i] != '\0') {
if (str[i] >= 97 && str[i] <= 122) {
counts[str[i] - 97]++;
}
i++;
count++;
}
for (i = 0; i < 50; i++) {
if (counts[i] != 0) {
printf("%c: %d\n", i + 97, counts[i]);
}
}
while (str[j] != '\0') {
if (((str[j] >= 32 && str[j] <=96)) || ((str[j] >=123 && str[j] <= 126))) {
counts[str[j] - 32]++;
}
j++;
}
for (j = 0; j < 50; j++) {
if (counts[j] != 0) {
//if((j) < 127)
printf("%c: %d\n", j + 32, counts[j]);
}
}
printf("Total amount of char: %d\n", count);
str[i] = '\0';
system("pause");
system("cls");
這是一個作業,讓我明白了,如果你不想說的直接代碼,但我會非常心存感激的一些提示點我在正確的方向。
請勿使用'gets()'.http://stackoverflow.com/questions/1694036/why-is-the-gets-function-so-dangerous-that-it-should-not-be-used – MrMuMu
您的'count'數組不夠大,無法保存您嘗試存儲在具有'j'的循環中的數值。你在數組中只有50個整數槽,但是你的索引要遠遠超過那個('96-32 = 64')。在打印和嘗試再次使用它時,您也不會重新調整陣列的大小。我假設你真的想這樣做。 – eddiem
使用地圖可以完成清潔實現。請檢查地圖文檔。 – Ehsan