C program to count number of words in a string
Learn how to count the total number of words in a string using C without pointers or separate functions. This step-by-step guide includes a sample program and detailed explanation.
Counting the number of words in a string is a common task in text processing. In this article, we'll walk through a C program that accomplishes this task using basic string manipulation techniques, without using pointers or separate functions.
Introduction
A word is typically defined as a sequence of characters separated by whitespace (spaces, tabs, or newline characters). We'll write a C program to count the number of words in a given string, considering these delimiters.
Algorithm
- Initialize Variables:
count
to store the number of words.inWord
to track if we are inside a word.
- Traverse the String:
- Use a loop to go through each character of the string.
- Check for whitespace characters to determine the boundaries of words.
- Counting Words:
- If a non-whitespace character is found and we are not already in a word, increment the word count and set
inWord
to true. - If a whitespace character is found, set
inWord
to false.
- If a non-whitespace character is found and we are not already in a word, increment the word count and set
- Edge Cases:
- Handle empty strings and strings with leading/trailing/multiple spaces.
Write a C program to count number of words in a string
#include <stdio.h>
int main() {
char str[1000];
int count = 0;
int inWord = 0;
// Input string from user
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
// Traverse the string using array indexing
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == ' ' || str[i] == '\t' || str[i] == '\n') {
inWord = 0;
} else if (!inWord) {
inWord = 1;
count++;
}
}
// Print the result
printf("Total number of words: %d\n", count);
return 0;
}
Output
Enter a string: Learn programming at ProCoding
Total number of words: 4
Explanation
- Include Headers:
- We include the standard input-output header (
stdio.h
) for input and output functions.
- We include the standard input-output header (
- Main Function:
- We declare a character array
str
to hold the input string. - We initialize
count
to 0 andinWord
to0
. - Using
fgets
, we read the input string from the user. - The
for
loop traverses each character in the string using array indexing. - If the character is a white space,
inWord
is set to0
. - If the character is not white space and
inWord
is0
, it indicates the start of a new word. We increment the word count and setinWord
to1
.
- We declare a character array
- Counting Logic:
- The
for
loop iterates through each character of the string until the null terminator ('\0'
) is encountered. - Within the loop, we check if the current character is a whitespace (
' '
,'\t'
, or'\n'
). - If it is, we set
inWord
tofalse
, indicating that we are not currently inside a word. - If it is not white space and
inWord
is0
, it means we have encountered the start of a new word. We increment the word count and setinWord
to1
.
- The
- Edge Cases:
- The program correctly handles empty strings, multiple spaces between words, and leading/trailing spaces.