通配符字符串比较
基本思想:
比如 str1 = m*ab, str2=mysab;
str1中除去*号的在str2中能找到。
str1中m能在str2中找到。
str1中ab能在str2中找到。
str1长度全部找完作为结束。
程序如下:
#include <stdio.h> #include <string.h> #include <malloc.h> #include <stdbool.h>
#define TRUE 1 #define FALSE 0 static int CompareTwoStr(char *str1,char *str2) { char temp[100] = {0}; char *pointer = str2; char *pointer1 = str1; int length1 = strlen(str1); int num =0; int i; int f = 1; char *fpointer = str2;
for(i = 0; i<= length1; i++, str1++) { if((*str1 ==星号) || (*str1 ==字符串结束符号)) { temp[num] = 字符串结束符号; num = 0; if(strlen(temp) == 0) { f = 0; continue; } pointer = strstr(pointer,temp); if(f && pointer != fpointer){ return FALSE; } if(pointer == NULL) { return FALSE; } pointer += strlen(temp); //打印此pointer值为第一次为yfffab 第二次为ab
f = 0; } else { temp[num++] = *str1; } } if(pointer1[length1 - 1] != 星号) { if(*pointer == 字符串结束符号) { return TRUE; } else { return FALSE; } } else { return TRUE; } } int main(void) { char *str1 ; str1= "m*ab"; char *str2 ; str2= "myfffab"; if( CompareTwoStr( str1, str2)){ printf("ok!n"); } else{ printf("error!n"); } }
|
程序中 “
星号”和字符串“字符串结束符号”相应换为* 和 程序中不能添加,一添加就提交失败,要么就是什么内容也没有。
阅读(2078) | 评论(0) | 转发(0) |