Write a C program which does wildcard pattern matching algorithm
Given two strings where first string may contain wild card characters and second string is a normal string. Write a function that returns true if the two strings match. The following are allowed wild card characters in first string.
* –> Matches with one or more instances of any character or set of characters.
? –> Matches with any single character.
For example, here “f?rmc*” matches with “firmcodes” string. Because it use two ‘*’ characters and single ? which indicates set of characters unknown and single character not known respectively.
#include <stdio.h>
#include <stdbool.h>
bool WildCmp(char *pattern, char *string);
int main()
{
if(WildCmp("f?rmc*","firmcodes"))
{
printf("! Match Found");
}
else
{
printf("! Match Not Found");
}
return 0;
}
bool WildCmp(char *pattern, char *string)
{
if(*pattern=='\0' && *string=='\0') // Check if string is at end or not.
return true;
if(*pattern=='?' || *pattern==*string) //Check for single character missing or match
return WildCmp(pattern+1,string+1);
if(*pattern=='*')
return WildCmp(pattern+1,string) || WildCmp(pattern,string+1); // Check for multiple character missing
return false;
}
Output
Suggested Reading
- Write a C program to reverse the words in a sentence in place
- Write your own trim() or squeeze() function to remove the spaces from a string
- Write a C program to reverse the string without using strrev() ?
If you like this Article, then don’t forget to Click on Social likes buttons.

