论坛: 编程破解 标题: 一个查找问题中的字符串比较问题 复制本贴地址    
作者: sniper167 [sniper167]    论坛用户   登录
在一个文件里面查找一个字符串,文件是按字母来排序的,如:
a
A battery
a la
a la carte
A level
…………
zymotic
zymurgy
zzz,z-z-z-

用二分法查找,用getword[index]取得在文件里面位置为index的字符串,当把这个字符串和输入字符串str比较时,如果用strcmp(getword[0], str), 很容易出问题,因为str为“A battery”、“A level”等字符串时,他们比getword[0]都还小,也就结束查找了。当查找这种大小写混杂的字符串时,也就找不到了。
请问怎么解决这个问题?偶在别的公司提供的平台上做,一些标准C的库都没移植全,比如strcmpi/stricmp  这些函数都用不了,无比郁闷中 
如果把取出来的字符串和输入的字符串全转换成大写或者小写再比较的话,可能找到的不是完全匹配的字符串,因为文件里面可能有AAA,aaa这样的字符串。

地主 发表时间: 06-05-17 09:56

回复: sniper167 [sniper167]   论坛用户   登录
这个版现在之冷清。。。
原来的几个伙计呢
还是自己顶个
问题都解决了。。。

B1层 发表时间: 06-05-18 21:21

回复: SysHu0teR [syshunter]   版主   登录
strstr(strlwr(getword[index]),strlwr(str));不行?

不对,还是不怎么明白你的意思。


很容易出问题,因为str为“A battery”、“A level”等字符串时,他们比getword[0]都还小,也就结束查找了。当查找这种大小写混杂的字符串时,也就找不到了。 ”
和 
“如果把取出来的字符串和输入的字符串全转换成大写或者小写再比较的话,可能找到的不是完全匹配的字符串,因为文件里面可能有AAA,aaa这样的字符串。”

看着有点矛盾

B2层 发表时间: 06-05-27 23:00

回复: sniper167 [sniper167]   论坛用户   登录
楼上这样的方法有可能是不匹配的
比如
AAaa  跟  aaAA
strstr(strlwr(getword[index]),strlwr(str));比较出来是相等的

a
A battery
a la
a la carte
A level
…………
zymotic
zymurgy
zzz,z-z-z-

看上面的文件格式  呵呵 

B3层 发表时间: 06-05-31 10:12

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号