c - 在 C 中处理包含多个 Null 字符的字符串

标签 c linux memory

我有一个 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/

相关文章:

c++ - 访问整数的最后 2 个字节

c - 代码执行的结果会是什么? C 运算符优先级

c - 命令运行两次时 gdb 得到不同的结构大小

c - 运算符在 switch 语句中不起作用

C++如何在Linux中使计时器准确

linux - Rm 和 Egrep -v 组合

java - 无法以编程方式将 Spark 应用程序(使用 Cassandra 连接器)从远程客户端提交到集群

video - iOS App崩溃并异常退出信号11 : Segmentation fault: 11

c# - ValueType 堆栈空间用完

c - 本地初始化字符串数组的内存分配