Подсчитать количество использований каждого символа во введенной пользователем строке и вывести результаты на экран
У меня вместе с нужными знаками выводится еще и лишний мусор, даже если не вводить строку то всеравно выведется ответ.
#include <stdio.h>
#include <string.h>
int main(void)
{
int x, k;
printf("Enter a string: ");
char str[134];
char ch;
fgets(str, sizeof(str), stdin);
fflush(stdin);
int a[130]={0};
for (k=33; k<=126; k++)
for (x=0; x<sizeof(str); x++)
if (ch=k ==str[x])
a[k]++;
for (k=33; k<=126; k++)
{
if (a[k]>0)
printf("%c - %d\n",ch=k,a[k]);
}
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
С учетом комментария...
Попробуйте так:
printf("Enter a string: ");
char str[134];
fgets(str, sizeof(str), stdin);
int a[256]={0};
for(char * c = str; *c; c++)
{
a[(unsigned char)*c]++;
}
for (int k = 0; k < 256; k++)
{
if (a[k] > 0)
printf("%c - %d\n",(char)k,a[k]);
}
Можете отсеивать все не-символы, например, начав с k = 33.