字符串逆序查找的问题(电子书从后往前查找)

张明云 2012-04-23 09:43:00
请教大家几个问题:
1、目前我自己有一个比较笨的字符串从后往前查找的算法,这个算法慢并且有瑕疵(从后往前递减的时候出现了乱码,因为汉字和标点符号的原因):
算法是这样的:先通过strstr判断当前页是否有需要查找的关键字,如果有则直接偏移到该也末尾,指向该页末尾的指针每次递减关键字长度的大小,如果遇到当前递减字符的值大于0x80则再减一次。如果此页没有关键字则跳转到前一页继续如上操作。代码如下:
unsigned char *p_Tmp = NULL;
unsigned char *p_CurrentPageBuf = NULL;

//malloc当前页大小的空间并从文本中读取该页文本保存到申请的空间里。
p_CurrentPageBuf = malloc(...);
if(NULL != p_CurrentPageBuf)
{
memset(p_CurrentPageBuf,0x00,currentPageSize);
fs_seek(....);
fs_read(p_CurrentPageBuf,....);
}
p_Tmp = strstr(p_CurrentPageBuf,keyWord);
do
{
if( NULL != p_Tmp)
{
p_Tmp = p_CurrentPageBuf + CurrentPageSize;
if(count < keyWordLen)
{
p_Tmp--;
count++;
if(*(p_Tmp-1)&0x80)//主要是这里有问题,在向前递减的过程中遇到标点符号,就减出问题来了。
{
p_Tmp--;
count++;
}
}

p_Str = strstr(p_Tmp,keyWord);
}
}while((p_Str == NULL) ||(p_Tmp-p_CurrentPageBuf < 0));
请教大家的问题:如何优化这段代码,特别是向前递减的代码段。
2、有没有比较经典的逆序查找字符串的算法或者想法。
...全文
402 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
堂积Code 2012-04-24
  • 打赏
  • 举报
回复
kmp
gqjjqg 2012-04-24
  • 打赏
  • 举报
回复
处理汉字建议用widechar类型,用BC可以方便一些。

69,371

社区成员

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

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