• Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

Computer Notes

Library
    • Computer Fundamental
    • Computer Memory
    • DBMS Tutorial
    • Operating System
    • Computer Networking
    • C Programming
    • C++ Programming
    • Java Programming
    • C# Programming
    • SQL Tutorial
    • Management Tutorial
    • Computer Graphics
    • Compiler Design
    • Style Sheet
    • JavaScript Tutorial
    • Html Tutorial
    • Wordpress Tutorial
    • Python Tutorial
    • PHP Tutorial
    • JSP Tutorial
    • AngularJS Tutorial
    • Data Structures
    • E Commerce Tutorial
    • Visual Basic
    • Structs2 Tutorial
    • Digital Electronics
    • Internet Terms
    • Servlet Tutorial
    • Software Engineering
    • Interviews Questions
    • Basic Terms
    • Troubleshooting
Menu

Header Right

Home » C » Union » C Program determine the frequency of words in a given string
Next →
← Prev

C Program determine the frequency of words in a given string

By Dinesh Thakur

A program to determine the number of words and average word length is given in Program. It uses the strtok function to separate the words in a given string. The program given below uses the same technique to separate the words in a given string and determine and print the frequency of these words.

The program uses a structure named word to store a word and its count. The word string is stored in an array of 20 characters, which is adequate for most words in the English language. The main function uses an array of this structure, named words, to store the distinct words in the given string and their counts. It is assumed that the given string may have at most 100 distinct words.

The main function first initializes character array str with a string literal. It then displays this string and calls the word_freq function to determine the distinct words in string strand their counts in array words. The contents of this array are then printed.

The word_freq function accepts two parameters: str (the string to be processed) and words (an array of struct word). It returns an integer value representing the count of distinct words in the given string. Since the strtok function modifies the string being processed, the word_freq function creates a duplicate of string str using the strdup function and operates on this string. A character pointer tmp_st r is used to point to this string.

A character array punct_str is used as a string of punctuation characters and is initialized with the string literal ” .,;:!?’\””; This string is used by the strtok function to separate the words in string tmp_str.

The word_freq function uses a local variable nword as a counter of distinct words in string str. Initially, this counter is initialized to zero and the strtok function is used to separate the first word in string tmp_str. A character pointer wptr is used to point to this word. Then a while loop is setup to process the entire string.

In each iteration of the loop, first the current word pointed to by wptr is searched for in the words array. If it is found, its count is incremented; otherwise, it is added to the words array as a new distinct word, its count is set to 1 and the nword counter is incremented. Then, the strtok function is called to separate the next word in string tmp_str.

/* Determine word frequency in a given string */
#include <stdio.h>
#include <string.h>
#include <conio.h>
struct word {
 char str[20]; /* word string: assume max 19 characters */
 int count; /* word count */
};
int word_freq(const char *str, struct word words[]);
int main () {
 char str[] = "Alexander said, \"I came, I saw, I conquered!\"";
 struct word words[100]; /* assume max. 100 distinct words */
 int nword; /* no of words */
 int i;
 printf("Given string:\n%s\n", str);
 nword = word_freq(str, words);
 puts("\nWord frequency:");
 for(i = 0; i < nword; i++)
  printf(" %s: %d\n", words[i].str, words[i] .count);
 return 0;
}
 /* calculate frequency of words in a given string */
int word_freq(const char *str, struct word words[]) {
 char punct_str [] =" .,;:!?'\""; /* punctuator list*/
 char *tmp_str; /* pointer to a copy of given string */
 char *wptr; /* pointer to a word */
 int nword; /* number of distinct words */
 int i;
 nword = 0;
 tmp_str = strdup(str); /* copy of given string */
 wptr = strtok(tmp_str, punct_str); /* get ptr to first word */
 while (wptr != NULL) {
   /* search current word in 'words' array */
   for(i = 0; i < nword; i++) {
     if (strcmp(wptr, words[i].str) == 0)
       break; /* current word found, stop search */
   }
 /* if current word is not in words array, add it at loc nword */
 if (i < nword) /* current word already in 'words' array */
   words[i] .count++; /* increment its count */
 else { /* current word not in 'words' array */
   strcpy(words[nword].str, wptr); /*add word at pos. nword */
   words[nword].count= 1; /* set freq count to 1 */
   ++nword; /*increment words count*/
 }
   wptr = strtok(NULL, punct_str); /* get ptr to next word */
 }
 free(tmp_str); /* release memory allocated to tmp_str */
 return nword;
} 

The program output is given below.

C Program determine the frequency of words in a given string

You’ll also like:

  1. C program to separate the words in a given string
  2. C Program Determine sum and average of several numbers entered from the keyboard.
  3. C Program Count the Numbers of Words in a File
  4. C Program print a given integer number in words
  5. C program to count the number of characters, words and lines in a text file
Next →
← Prev
Like/Subscribe us for latest updates     

About Dinesh Thakur
Dinesh ThakurDinesh Thakur holds an B.C.A, MCDBA, MCSD certifications. Dinesh authors the hugely popular Computer Notes blog. Where he writes how-to guides around Computer fundamental , computer software, Computer programming, and web apps.

Dinesh Thakur is a Freelance Writer who helps different clients from all over the globe. Dinesh has written over 500+ blogs, 30+ eBooks, and 10000+ Posts for all types of clients.


For any type of query or something that you think is missing, please feel free to Contact us.


Primary Sidebar

C Programming

C Programming Tutorials

  • C - History
  • C - Anatomy
  • C - Constants
  • C - Identifiers
  • C - Data Types
  • C - Libraries File
  • C - Header Files
  • C - Basic Language
  • C - Data Types Sizes
  • C - Header Files Importance
  • C - Escape Sequences
  • C - Main() Purpose
  • C - Program Procedure
  • C - Control Statements
  • C - Enumeration Constant
  • C - Add numbers
  • C - Return Statement
  • C - Avoid Goto
  • C - Command Line Arguments
  • C - Switch Case
  • C - Switch Case Limitations
  • C - getchar() and putchar()
  • C - Iteration Statements
  • C - Pass by Value and Reference
  • C - Structures and Unions
  • C - Structure
  • C - Dynamic Memory
  • C - Fgets and Fputs Functions
  • C - Gets() and Puts() Functions
  • C - Armstrong Number
  • C - Storage Classes
  • C - Fibonacci Series
  • C - Precision Setting
  • C - const Parameters

C - Variable & It's Type

  • C - Variables
  • C - Variable Lifetime
  • C - Static Variable
  • C - Register Variable
  • C - Global Variables
  • C - Auto Variables
  • C - Local Variables

C - Operator & Expressions

  • C - Operator
  • C - Boolean Operators
  • C - Bitwise Operator
  • C - Arithmetic Operators
  • C - Modulus Operator
  • C - Ternary Operator
  • C - Expressions
  • C - Arithmetic Expressions

C - Array

  • C - Arrays
  • C - Array Types
  • C - Array Characteristics
  • C - Static Arrays
  • C - Global Arrays
  • C - 3D Arrays
  • C - Dynamic Arrays
  • C - Pointer to 3D Arrays
  • C - Array Elements Hold
  • C - Arrays as Function Parameters
  • C - Accessing Matrix Elements
  • C - File Handling
  • C - Matrix Multiplication
  • C - Dynamic Memory Allocation

C - Searching & Sorting

  • C - Data Structures
  • C - Linear Search
  • C - Bubble Sort
  • C - Merge Sort
  • C - Linked List
  • C - Insertion Sort
  • C - Binary Search
  • C - Selection Sort
  • C - Quick Sort

C - Functions

  • C - Functions
  • C - Functions Advantages
  • C - Void Functions
  • C - Function Call
  • C - Default Return Value
  • C - String functions

C - Pointer

  • C - Pointers
  • C - Type Casting Of Pointers
  • C - Pointer Advantages
  • C - Pointers Initialization
  • C - Vectors and Pointers

C - Differences

  • C - C Vs C++
  • C - Formal Args. Vs Actual Args.
  • C - Keywords Vs Identifiers
  • C - Strings Vs Character Arrays
  • C - Address Vs Dereference Operator
  • C - Goto Vs longjmp
  • C - Declaring Vs Defining Variable
  • C - String Vs Array
  • C - Call by Value Vs Reference
  • C - Structure Vs Union
  • C - For Vs While loops
  • C - Compiler Vs Interpreter

C - Programs

  • C Program Standard Deviation
  • C Program Calculate Tax
  • C Program Sum Series
  • C Program Merge Arrays
  • C Program Euclid’s Algorithm
  • C Program Print Weekdays
  • C Program Sum of Digits
  • C Program Print a list
  • C Program Print Pythagorean
  • C Program Quiz program
  • C Program Display Table
  • C Program Print Comma-Separated
  • C Program Prints Prime Numbers
  • C Program for Print Integer
  • C Program Count Number
  • C Program Print Color Name
  • C Program Print Odd Numbers
  • C Program Calculate area
  • C Program for a Menu
  • C Program Add Two Vectors
  • C Program Array Addresses
  • C Program Division by Zero Error
  • C Program Compare two Dates
  • C Program Tower of Hanoi
  • C Program return 3 Numbers
  • C Program for Prime Numbers
  • C Program for Factorial
  • C Program for Palindrome

Other Links

  • C Programming - PDF Version

Footer

Basic Course

  • Computer Fundamental
  • Computer Networking
  • Operating System
  • Database System
  • Computer Graphics
  • Management System
  • Software Engineering
  • Digital Electronics
  • Electronic Commerce
  • Compiler Design
  • Troubleshooting

Programming

  • Java Programming
  • Structured Query (SQL)
  • C Programming
  • C++ Programming
  • Visual Basic
  • Data Structures
  • Struts 2
  • Java Servlet
  • C# Programming
  • Basic Terms
  • Interviews

World Wide Web

  • Internet
  • Java Script
  • HTML Language
  • Cascading Style Sheet
  • Java Server Pages
  • Wordpress
  • PHP
  • Python Tutorial
  • AngularJS
  • Troubleshooting

 About Us |  Contact Us |  FAQ

Dinesh Thakur is a Technology Columinist and founder of Computer Notes.

Copyright © 2025. All Rights Reserved.

APPLY FOR ONLINE JOB IN BIGGEST CRYPTO COMPANIES
APPLY NOW