#include #include int getstring(char**); void statistics(char*, int*); void printstat(int*); int main() { char **buffer, input[81]; int counts[26], i, bufs, exxit = 0; while(!exxit) { printf("Sisestage palun string:\n"); buffer = malloc(sizeof(char*)); bufs = 1; for(bufs=1; getstring(&buffer[bufs - 1]) != 1; bufs++) buffer = realloc(buffer, (bufs+1) * sizeof(char*)); memset(counts, 0, 26 * sizeof(int)); for(i=0; i < bufs; i++) { statistics(buffer[i], counts); free(buffer[i]); } free(buffer); printstat(counts); printf("\nKorrata(j/e): "); fgets(input, 81, stdin); if(input[0] == 'e' || input[0] == 'E') return 0; } return 0; } // buffer - tehakse malloc. hoiduda leketest. int getstring(char **buffer) { char input[81]; input[0] = ' '; input[1] = 0; *buffer = malloc(1); **buffer = 0; while(input[strlen(input)-1] != '\n') { fgets(input, 81, stdin); *buffer = realloc(*buffer, strlen(*buffer) + strlen(input) + 1); strcat(*buffer, input); } return strlen(*buffer); } void statistics(char *buffer, int *counts) { int i; for(i=0; buffer[i]!=0; i++) { if(buffer[i] > 90) buffer[i] -= 32; if(buffer[i] > 64 && buffer[i] < 91) counts[buffer[i]-65]++; } } void printstat(int *counts) { int i; for(i=65; i<91; i++) printf(" %c", (char) i); putchar('\n'); for(i=0; i<26; i++) printf("%3i", counts[i]); putchar('\n'); }