编写一个通用的C语言模式函数可以使用递归和字符串处理来实现。以下是一个示例解决方法:
#include 
#include 
void patternMatching(char *pattern, char *text) {
    if (*pattern == '\0' || *text == '\0') {
        return;
    }
    // 如果当前字符匹配,则继续匹配下一个字符
    if (*pattern == *text || *pattern == '?') {
        patternMatching(pattern + 1, text + 1);
    }
    // 如果当前字符是'*',则可以选择匹配0个字符,或者匹配多个字符
    if (*pattern == '*') {
        patternMatching(pattern + 1, text); // 匹配0个字符
        patternMatching(pattern, text + 1); // 匹配多个字符
    }
}
int main() {
    char pattern[100];
    char text[100];
    printf("请输入模式字符串:");
    scanf("%s", pattern);
    printf("请输入待匹配字符串:");
    scanf("%s", text);
    patternMatching(pattern, text);
    return 0;
}
  
在上面的代码中,patternMatching函数使用递归的方式进行模式匹配。它接受两个参数:pattern表示模式字符串,text表示待匹配字符串。
在函数的实现中,首先检查当前字符是否匹配。如果是匹配的字符或者是通配符'?',则继续匹配下一个字符。
如果当前字符是通配符'*',则可以选择匹配0个字符,或者匹配多个字符。分别递归调用patternMatching函数来进行这两种情况的匹配。
最后,在main函数中,我们通过用户输入获取模式字符串和待匹配字符串,并调用patternMatching函数进行模式匹配。
请注意,上述代码只是一个示例解决方法。在实际应用中,还需要考虑一些边界条件和错误处理。