求助,在LINUX写了一个查找的函数,查找英文没问题,查找中文的时候输出了全部

Rank_soki 2017-12-13 12:32:25
在LINUX写了一个函数进行相对查找,查找英文没问题,查找中文的时候输出了全部,不知道是哪里的问题,求高手帮忙看看,下面是代码

int substr(char *s1, char *s2, int len)
{
int i;
int p,j;
j=0;
for (i = 0; i < len; i++)
{
p = i;
if ((strchr(s2, s1[p])))//如果s2中存在字符s1[p],则为真
{
j++;
}
}
if(j>0)
{
return 1;
}
else
{
return 0;
}

}

//相对查找
void relatively_name(BOOK *head, char *sea)
{
BOOK *ptr;
int len;
char *bf1,*bf2,*bf3;
bf1 = (char *)malloc(32 * sizeof(char));
bf2 = (char *)malloc(32 * sizeof(char));
bf3 = (char *)malloc(32 * sizeof(char));
ptr = head;
len=strlen(sea);
while (ptr != NULL) //遍历链表
{
strcpy(bf1,ptr->name);
strcpy(bf2,ptr->phone);
strcpy(bf3,ptr->address);
if(substr(sea,bf1,len))
{
printf("%s\t%s\t%s\n", ptr->name, ptr->phone, ptr->address);
ptr = ptr->next;
}
else if(substr(sea,bf2,len))
{
printf("%s\t%s\t%s\n", ptr->name, ptr->phone, ptr->address);
ptr = ptr->next;
}
else if(substr(sea,bf3,len))
{
printf("%s\t%s\t%s\n", ptr->name, ptr->phone, ptr->address);
ptr = ptr->next;
}
else
{
ptr=ptr->next;
}
}

}

在我输入 哈 的时候,不相关的也被输出了
...全文
183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rank_soki 2017-12-13
  • 打赏
  • 举报
回复
只要我输入汉字,所有汉字相关的数据都被输出了 ,不管我输入的是什么
Rank_soki 2017-12-13
  • 打赏
  • 举报
回复
引用 3 楼 jianwen0529 的回复:
[quote=引用 2 楼 jianwen0529 的回复:] 需要支持中文最好改用wchar_t进行存储 然后把strlen,strchr,strcpy等字符串操作函数修改为针对wchar_t类型的版本
printf这个函数同样需要[/quote]搞定了 谢谢
Rank_soki 2017-12-13
  • 打赏
  • 举报
回复
引用 3 楼 jianwen0529 的回复:
[quote=引用 2 楼 jianwen0529 的回复:] 需要支持中文最好改用wchar_t进行存储 然后把strlen,strchr,strcpy等字符串操作函数修改为针对wchar_t类型的版本
printf这个函数同样需要[/quote] 怎么改呢 查了一下char到wchar_t的转换 没怎么看明白 还是说直接把我程序里的char全改成wchar?
sky065530 2017-12-13
  • 打赏
  • 举报
回复
一个中文字符占两个字节的话
幻夢之葉 2017-12-13
  • 打赏
  • 举报
回复
引用 2 楼 jianwen0529 的回复:
需要支持中文最好改用wchar_t进行存储 然后把strlen,strchr,strcpy等字符串操作函数修改为针对wchar_t类型的版本
printf这个函数同样需要
幻夢之葉 2017-12-13
  • 打赏
  • 举报
回复
需要支持中文最好改用wchar_t进行存储 然后把strlen,strchr,strcpy等字符串操作函数修改为针对wchar_t类型的版本

69,377

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧