我在一条strstr(),的匹配语句中,没有得到预想的结果。但是查看内存,确实是应该有我需要的字段。为了防止strstr(),的不安全性,我已经在缓冲区的末尾补了0。
请指教!急用!!!!
6 个解决方案
#1
是不是在想匹配的字段之前遇到了了'\0'?
试着把接收来的长邮件分段分析(不同段之间要有重叠部分,长度不小于你的关键字的最大长度),比如分成100K长的一段一段的,如果问题消除,则说明strstr可能真的有长度方面的bug。
试着把接收来的长邮件分段分析(不同段之间要有重叠部分,长度不小于你的关键字的最大长度),比如分成100K长的一段一段的,如果问题消除,则说明strstr可能真的有长度方面的bug。
#2
邮件内容是经过了编码的,里面是不可能会有\0的,而且我的方案对于126,新浪邮箱的内容是没有问题的,上兆的文本文件也没有问题。可是对于yahoo的出现了问题。
#3
在几百M的内容上试也没有问题啊, 可能真的是 steedhorse(晨星) 说的 是不是在想匹配的字段之前遇到了了'\0'?
#4
用strlen()看一下长度,如果出来的值不对,说明里面有'\0'
#5
会不会收下来的是Unicode或其他不是char类型的
#6
不是Unicode就是遇到'\0'
自己编一个测试一下就知道
自己编一个测试一下就知道
#1
是不是在想匹配的字段之前遇到了了'\0'?
试着把接收来的长邮件分段分析(不同段之间要有重叠部分,长度不小于你的关键字的最大长度),比如分成100K长的一段一段的,如果问题消除,则说明strstr可能真的有长度方面的bug。
试着把接收来的长邮件分段分析(不同段之间要有重叠部分,长度不小于你的关键字的最大长度),比如分成100K长的一段一段的,如果问题消除,则说明strstr可能真的有长度方面的bug。
#2
邮件内容是经过了编码的,里面是不可能会有\0的,而且我的方案对于126,新浪邮箱的内容是没有问题的,上兆的文本文件也没有问题。可是对于yahoo的出现了问题。
#3
在几百M的内容上试也没有问题啊, 可能真的是 steedhorse(晨星) 说的 是不是在想匹配的字段之前遇到了了'\0'?
#4
用strlen()看一下长度,如果出来的值不对,说明里面有'\0'
#5
会不会收下来的是Unicode或其他不是char类型的
#6
不是Unicode就是遇到'\0'
自己编一个测试一下就知道
自己编一个测试一下就知道