Chinaunix首页 | 论坛 | 博客
  • 博客访问: 175180
  • 博文数量: 49
  • 博客积分: 2802
  • 博客等级: 大尉
  • 技术积分: 502
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-25 12:02
个人简介

来就来吧

文章分类

全部博文(49)

文章存档

2014年(1)

2012年(1)

2011年(11)

2010年(26)

2009年(10)

分类: C/C++

2009-12-28 12:05:55

通配符字符串比较
基本思想:
比如 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) |
0

上一篇:ip数据包头长度

下一篇:grub err22

给主人留下些什么吧!~~