С - как подсчитать количество встречающихся символов?

Нужно посчитать частотность в строке букв. Желательно без макросов. Если в цикле считывать массив символов, но как посчитать частотность уже прочитанных символов. Читать массив символов и собирать внутри него другой массив по которого каждый раз при новом символе проходить и как-то увеличивать - запоминать счетчик? Или можно по другому варианту решить?

Начал писать, но как подсчитать те символы что уже встречались не соображу пока.

#include <stdio.h>
#include <string.h>
int main (void)
{
    char * s = "This is the test string.";
    int size = strlen(s), i;  
    for(i = 0; i < size; i++){
        
    if(s[i] != ' '){
        printf("%c", s[i]);
        }
    } 
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Массив из 256 (по числу букв) элементов. Больше ничего не надо...

#include <stdio.h>
#include <string.h>
int main ()
{
    char s[] = "This is the test string.";

    int cnt[256] = {0};

    for(char * c = s; *c; cnt[(unsigned char)*c++]++);

    for(int i = 0; i < 256; ++i)
        if (cnt[i])
            printf("%c -- %d\n", (char)i, cnt[i]);
}
→ Ссылка