搜索并替换字符串并忽略空字节字符

时间:2011-09-14 06:54:15

标签: c string replace

我正在开发一个使用NFQUEUE来过滤其他应用程序流量的C程序。我需要做的一件事就是用另一个字符串替换包中包含的字符串。

问题是,数据包似乎随机包含空终止符字节(在字符串的中间)。这意味着我使用strstr()看到的大多数解决方案都不起作用。我需要找到类似的东西,在达到空终止符字节时不会停止,而是允许指定长度并使用它。 (nfq_get_payload()返回一个长度。)

我已经看过在执行替换之前用另一个字节替换空字节,然后在发送数据包之前恢复空字节。这种方法的问题是数据包有可能包含该字符,因此这不是最好的方法。我想我也可以找到一个未包含在数据包中的随机字节,但我宁愿避免这样做。

编辑:原始字符串和替换字符串都是相同的长度,即13个字符。

1 个答案:

答案 0 :(得分:1)

如果找到一个字符可以为您工作,您可能会对memchr感到满意。否则,您必须自己进行memmem实施或在线查找。

请注意,字符串搜索算法(因为那是memmem)可以具有广泛的性能特征,因此您希望根据性能算法找到一个(例如this one看起来可以接受,但你的里程可能会有所不同。)