strstr函数对字符串长度是否有限制?

时间:2022-07-05 22:16:32
我对截获的邮件包进行分析。当内容在200k左右时,运行一切良好,可以顺利写文件。但是,如果的我的邮件内容到达400k,500k,800k等,便无法接受到顺利的内容,一般来说是没有。通过跟踪,所有的内容实际已经写入了我开的buf,有一次长度是1371074个字节长。
我在一条strstr(),的匹配语句中,没有得到预想的结果。但是查看内存,确实是应该有我需要的字段。为了防止strstr(),的不安全性,我已经在缓冲区的末尾补了0。
请指教!急用!!!!

6 个解决方案

#1


是不是在想匹配的字段之前遇到了了'\0'?
试着把接收来的长邮件分段分析(不同段之间要有重叠部分,长度不小于你的关键字的最大长度),比如分成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。

#2


邮件内容是经过了编码的,里面是不可能会有\0的,而且我的方案对于126,新浪邮箱的内容是没有问题的,上兆的文本文件也没有问题。可是对于yahoo的出现了问题。

#3


在几百M的内容上试也没有问题啊, 可能真的是  steedhorse(晨星) 说的 是不是在想匹配的字段之前遇到了了'\0'?

#4


用strlen()看一下长度,如果出来的值不对,说明里面有'\0'

#5


会不会收下来的是Unicode或其他不是char类型的

#6


不是Unicode就是遇到'\0'
自己编一个测试一下就知道