How to print string characters and their frequencies in alphabetical order with C

1 Answer

0 votes
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
    
int compare_function(const void *a, const void *b) {
   return ( *(int*)a - *(int*)b );
}
void print_char_frequencies(char s[]) { 
    int letters[256][2] = {{0},{0}}; 
     
    for (int i = 0; i < strlen(s); i++) {
         if (isalpha(s[i])) {
             letters[(int)s[i]][0]++;
			 letters[(int)s[i]][1] = i;
		 }
    }
	qsort(letters, strlen(s), sizeof(int), compare_function);
     
    for (int i = 0; i < 256; i++) { 
        if (letters[i][1] != 0) {
            printf("%c %d\n", (char)i, letters[i][0]);
        }
    } 
} 

int main() 
{                       
    char s[] = "c programming pro oo"; 
        
    print_char_frequencies(s);
         
    return 0; 
} 
      
      
      
/*
run:
      
a 1
g 2
i 1
m 2
n 1
o 4
p 2
r 3
      
*/

 



answered Dec 3, 2019 by avibootz

Related questions

...