C Program: Count Vowels in a File
Here, we will be counting the number of vowels (a, e, i, o , u) in a file.
We consider the same text file from our previous C program.
The file was tyger.txt, which consists of
the first stanza of
"The Tyger"
poem by William Blake.
Tyger Tyger, burning bright,
In the forests of the night;
What immortal hand or eye,
Could frame thy fearful symmetry?
The program too is similar to the
previous C program, just that
we declare one extra
unsigned short int variable to count the
number of vowels. And inside the
while loop, the character read by the file
pointer is checked for both lowercase and uppercase vowels.
#include <stdio.h>
int main() {
unsigned short vowels = 0;
char c, file[50];
FILE *fp;
printf("FILENAME: ");
scanf("%[^\n]", file);
fp = fopen(file, "r"); // 'r' opens the file in read mode
printf("READING THE CONTENTS OF THE FILE [ %s ]\n", file);
while((c = fgetc(fp)) != EOF) {
if(c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U') {
vowels++;
}
printf("%c", c);
}
printf("\n");
printf("NUMBER OF VOWELS: %hu \n", vowels);
fclose(fp);
return 0;
}
On running the program and entering
tyger.txt for the prompt to enter
FILENAME
$ ./a.out
FILENAME: tyger.txt
we get