我有一个 char[]
缓冲区,其中包含从内存中读取的数据,这意味着该缓冲区中有多个 Null,而不是只有一个在末尾终止的 Null。
char *addr = (char *)memmem(buff, strlen(buff), needle, strlen(needle));
我需要处理这个字符串并搜索和替换某些内容。
为此,我想使用 memmem()
,但不幸的是,它不起作用,因为缓冲区中有多个 Null。
我尝试用一个我认为它不会出现的字符(Bell ASCII 代码\7)替换缓冲区中的 Null,然后对其进行处理,但这不起作用并损坏了我的数据。
是否有另一种方法来处理具有多个 Null 的字符串?
最佳答案
memmem
可以用来做到这一点。但是,由于您的数据包含嵌入的空值,因此您不能使用 strlen
来计算长度。您需要单独跟踪长度。
char *addr = (char *)memmem(buff, buffLen, needle, needleLen);
关于c - 在 C 中处理包含多个 Null 字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20630173/