Count Vowels, Consonants, and Digits in C

May 4, 2021

In this tutorial our program will count the number of vowels, consonants, and digits using C programming language. I hope you will find my  work useful.I am currently accepting programming work, IT projects, school and application development, programming projects, thesis and capstone projects, IT consulting work, computer tutorials, and web development work kindly contact me at the following email address for further details.  If you want to advertise on my website kindly contact me also in my email address also. Thank you.

Program Listing

``````/* vowels_consonants.c
Author : Jake Rodriguez Pomperada, MAED-IT, MIT
Bacolod City, Negros Occidental Philippines
*/

#include <stdio.h>
#include <assert.h>
#include <stdbool.h>
#include <ctype.h>
#include <string.h>

typedef struct
{
int vowel_count;
int consonant_count;
int digit_count;
}Stat;

bool is_vowel(char ch)
{
const char vowels[] = "aeiou";

return strchr(vowels, tolower(ch)) != NULL;
}

bool is_consonant(char ch)
{
const char consonants[] = "bcdfghjklmnpqrstuvwxyz";

return strchr(consonants, tolower(ch)) != NULL;
}

void do_stats(const char* txt, size_t size, Stat *stat)
{
assert(txt != NULL && size > 1);
assert(stat != NULL);

const char *cp = txt;

while (size--)
{
if (is_vowel(*cp))
stat->vowel_count++;
else if (is_consonant(*cp))
stat->consonant_count++;
else if (isdigit(*cp))
stat->digit_count++;
cp++;
}
}

void print_stats(const Stat* stat)
{
assert(stat != NULL);

printf("\tStatistics:\n");
printf("\t===========\n");
printf("\t  Vowels    : %d\n", stat->vowel_count-1);
printf("\t  Consonants: %d\n", stat->consonant_count);
printf("\t  Digits    : %d\n", stat->digit_count);
}

int main()
{
Stat stat = {0,0,0};
printf("\n\n");
printf("\tCount Vowels,Consonants, and Digits in C");
printf("\n\n");
const char input[] = "Jake Pomperada, 42 years old and 173 cm tall.";
printf("\t%s", input);
printf("\n\n");
do_stats(input, sizeof(input), &stat);
print_stats(&stat);
printf("\n\n");
system("pause");
}
``````