C语言中的字符匹配,中英文混合
C语言中中英文混合的字符匹配,希望能给出程序。<string.h>中的strstr函数不能解决这个问题。strstr会出错的,比如:char*a="abc中国成都火车南站...
C语言中中英文混合的字符匹配,希望能给出程序。
<string.h>中的strstr 函数不能解决这个问题。
strstr会出错的,比如:
char *a = "abc中国成都火车南站edf 上耳";
strstr(a,b);
你试试就知道了
我现在写了一个函数,应该没有问题
char *find(char *src, char *sub)
{
char *str1;
char *str2;
char *temp;
temp = src;
while(*temp)
{
str1 = temp;
str2 = sub;
while(*str1 && *str2 && !(*str1 - *str2))
{
str1++;
str2++;
}
if((unsigned char)*temp > 160 && !*str2 && (*str1 - *str2))
{
temp++;
}
if(!*str2)
{
return temp;
}
temp++;
}
return NULL;
} 展开
<string.h>中的strstr 函数不能解决这个问题。
strstr会出错的,比如:
char *a = "abc中国成都火车南站edf 上耳";
strstr(a,b);
你试试就知道了
我现在写了一个函数,应该没有问题
char *find(char *src, char *sub)
{
char *str1;
char *str2;
char *temp;
temp = src;
while(*temp)
{
str1 = temp;
str2 = sub;
while(*str1 && *str2 && !(*str1 - *str2))
{
str1++;
str2++;
}
if((unsigned char)*temp > 160 && !*str2 && (*str1 - *str2))
{
temp++;
}
if(!*str2)
{
return temp;
}
temp++;
}
return NULL;
} 展开
2个回答
展开全部
用另一个函数
unsigned char *_mbsstr(
const unsigned char *string,
const unsigned char *strSearch
);
挺好用的
#include <iostream>
#include <mbstring.h>
using namespace std;
int main()
{
char *a = "abc中国成都火车南站edf 上耳";
char *b = "站ed";
cout << _mbsstr( (unsigned char *)a, (unsigned char *)b ) << endl;
return 0;
}
unsigned char *_mbsstr(
const unsigned char *string,
const unsigned char *strSearch
);
挺好用的
#include <iostream>
#include <mbstring.h>
using namespace std;
int main()
{
char *a = "abc中国成都火车南站edf 上耳";
char *b = "站ed";
cout << _mbsstr( (unsigned char *)a, (unsigned char *)b ) << endl;
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询