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;
}
展开
 我来答
百度网友d3e418b2c
2007-05-18 · TA获得超过2195个赞
知道大有可为答主
回答量:1361
采纳率:0%
帮助的人:1698万
展开全部
strstr可以的,查找出字符串中与给定的字符串相符的指针位置,并返回该指针.
如:char *str1 = "Borland International", *str2 = "nation", *ptr;
ptr = strstr(str1, str2);
则ptr就指在nation的首地址"n"的位置.输出ptr为:national
中文汉字在内存地址中跟英文字符一样,只不过占两个字符,同样可以用strstr找出。
chenhaooo
2007-05-18 · TA获得超过439个赞
知道小有建树答主
回答量:487
采纳率:0%
帮助的人:273万
展开全部
用另一个函数
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式