【发布时间】:2013-12-17 09:17:23
【问题描述】:
我有一个 char[] 缓冲区,其中包含从内存中读取的数据,这意味着此缓冲区中有多个 Null,而不仅仅是一个结尾的 Null。
char *addr = (char *)memmem(buff, strlen(buff), needle, strlen(needle));
我需要处理这个字符串并搜索和替换某些内容。
为此,我想使用memmem(),但不幸的是,它不起作用,因为缓冲区中有多个 Null。
我尝试将缓冲区中的 Null 替换为我认为不会出现的字符(Bell ASCII 代码 \7),然后对其进行处理,但这不起作用并损坏了我的数据。
还有其他方法可以处理具有多个 Null 的字符串吗?
【问题讨论】:
-
一个 C 字符串只有一个
\0并且在它的末尾。包含任何值的 char 数组不是字符串,不能在其上使用<string.h>函数。 -
请不要将
memmem()的返回值投射到C中。