C++ Program to Count Number of Words in a String

In this article, you will learn and get code to count total number of words present or available in a given string by user at run-time in C++ language.

For example, if the entered string is, codes cracker dot com, then total number of words is 4.

Count Total Number of Words in String

To count the total number of words available in a string in C++ programming, you have to ask from user to enter the string or sentence first. And then count and print the result as shown in the program given below.

The question is, write a program in C++ that counts total number of words in a string. Here is its answer.

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    char str[200];
    int i=0, chk=0, countWord=0;
    cout<<"Enter the String: ";
    gets(str);
    while(str[i]!='\0')
    {
        if(str[i]==' ')
        {
            if(chk!=0)
                countWord++;
            chk=0;
        }
        else
        {
            chk++;
        }
        i++;
    }
    if(chk!=0)
        countWord++;
    cout<<"\nTotal Number of Words = "<<countWord;
    cout<<endl;
    return 0;
}

This program was build and run under Code::Blocks IDE. Here is its sample run:

C++ program count number words sentence

Now supply any string say this is codes cracker dot com as input, and press ENTER key to count and print total number of words available in the entered string:

c++ count words in string

And here is another sample run with following user input:

  this    is codes cracker    dot com  

That is, __this____is_codes_cracker____dot_com__. In this string, there are 2, 4, 1, 1, 4, 1 spaces are available before each words, and 2 spaces after last word:

count words in string c++

The dry run of above program with user input, this is codes cracker dot com goes like:

  • Initial values, i=0, chk=0, countWord=0
  • When user enters a string, then it gets stored in str variable in a way that
    • str[0]=t
    • str[1]=h
    • str[2]=i
    • and so on, upto
    • str[28]=m
  • Because the maximum size of str[] is 200, but the entered string is of size 29 (because indexing starts from 0, so 28(last index)+1 will be the size). Therefore at index after last character's index, a null terminated character (\0) automatically gets assigned. So str[29]=\0
  • A null terminated character indicates that, no character is left from the index where it is available
  • Now the condition of while loop gets evaluated
  • That is, the condition, str[i]!='\0' or str[0]!='\0' or t!='\0' evaluates to be true, therefore program flow goes inside the loop
  • There, the condition of if gets evaluated
  • That is, the condition, str[i]==' ' or str[0]==' ' or t==' ' evaluates to be false, therefore program flow does not goes inside its body, rather it goes to else's body and increments the value of chk. So chk=1
  • And as last statement, the value of i gets incremented. So i=1
  • Now program flow goes back and evaluates the condition of while loop again
  • The process continues, until the condition of while loop evaluates to be false
  • On continuing the evaluation of while loop, here are the values after each evaluation:
    • chk=1, i=1
    • chk=2, i=2
    • chk=3, i=3
    • chk=4, i=4
    • chk=0, countWord=1, i=5
    • chk=1, i=6
    • chk=2, i=7
    • chk=0, countWord=2, i=8
    • chk=1, i=9
    • chk=2, i=10
    • chk=3, i=11
    • chk=4, i=12
    • chk=5, i=13
    • chk=0, countWord=3, i=14
    • chk=1, i=15
    • chk=2, i=16
    • chk=3, i=17
    • chk=4, i=18
    • chk=5, i=19
    • chk=6, i=20
    • chk=7, i=21
    • chk=0, countWord=4, i=22
    • chk=1, i=23
    • chk=2, i=24
    • chk=3, i=25
    • chk=0, countWord=5, i=26
    • chk=1, i=27
    • chk=2, i=28
    • chk=3, i=29
  • After exiting from the while loop, the condition chk!=0 or 3!=0 evaluates to be true, therefore the value of countWord gets incremented. So countWord=6
  • Now print the value of countWord as output of total number of words in the string

C++ Online Test


« Previous Program Next Program »