Write a C program to count the frequency of words in a string.
#include <stdio.h>
#include <string.h>
int main() {
char string[256], text[256], words[100][256], temp[256];
int i, j, k, n, count;
i = j = k = n = 0;
/* get the input string from the user */
printf("Enter your input string:");
fgets(string, 256, stdin);
string[strlen(string) - 1] = '\0';
/* copying each and every word from the string */
while (string[i] != '\0') {
if (string[i] == ' ') {
words[j][k] = '\0';
k = 0;
j++;
} else {
words[j][k++] = string[i];
}
i++;
}
words[j][k] = '\0';
n = j;
#include <string.h>
int main() {
char string[256], text[256], words[100][256], temp[256];
int i, j, k, n, count;
i = j = k = n = 0;
/* get the input string from the user */
printf("Enter your input string:");
fgets(string, 256, stdin);
string[strlen(string) - 1] = '\0';
/* copying each and every word from the string */
while (string[i] != '\0') {
if (string[i] == ' ') {
words[j][k] = '\0';
k = 0;
j++;
} else {
words[j][k++] = string[i];
}
i++;
}
words[j][k] = '\0';
n = j;
/* sort the words in the given string */
for (i = 0; i < n; i++) {
strcpy(temp, words[i]);
for (j = i + 1; j <= n; j++) {
if (strcmp(words[i], words[j]) > 0) {
strcpy(temp, words[j]);
strcpy(words[j], words[i]);
strcpy(words[i], temp);
}
}
}
printf("Frequency of words:\n");
i = 0;
/* find the frequency of each word and print the results */
while (i <= n) {
count = 1;
if (i != n) {
for (j = i + 1; j <= n; j++) {
if (strcmp(words[i], words[j]) == 0) {
count++;
}
}
}
/* count - indicates the frequecy of word[i] */
printf("%s\t%d\n", words[i], count);
/* skipping to the next word to process */
i = i + count;
}
printf("\n");
return 0;
}
Output:
jp@jp-VirtualBox:~/$ ./a.out
Enter your input string:apple bat apple ball bat ball cat rat cat ball
Frequency of words:
apple 2
ball 3
bat 2
cat 2
rat 1
Enter your input string:apple bat apple ball bat ball cat rat cat ball
Frequency of words:
apple 2
ball 3
bat 2
cat 2
rat 1
This comment has been removed by the author.
ReplyDelete