c - C中单个缓冲区中的多个空终止字符串

标签 c string buffer packing

需要制作具有以下格式的字符串并将其放入单个缓冲区 [1000]。请注意,\x00 是空终止符。

@/foo\x00ACTION=add\x00SUBSYSTEM=block\x00DEVPATH=/devices/platform/goldfish_mmc.0\x00MAJOR=command\x00MINOR=1\x00DEVTYPE=harder\x00PARTN=1

所以本质上我需要将以下以 null 结尾的字符串打包到一个缓冲区中

@/foo  
ACTION=add  
SUBSYSTEM=block  
DEVPATH=/devices/platform/goldfish_mmc.0  
MAJOR=command  
MINOR=1  
DEVTYPE=harder  
PARTN=1  

我该怎么做呢?

最佳答案

您需要一次将每个字符串复制一个,跟踪上一次复制停止的位置并紧接着开始复制下一个。

char *p = buffer;
strcpy(p, "@/foo");
p += strlen(p) + 1;
strcpy(p, "ACTION=add");
p += strlen(p) + 1;
...

关于c - C中单个缓冲区中的多个空终止字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47538241/

相关文章:

c - 将匿名参数传递给 C 中的函数

linux - C/C++格式字符串中的填充如何存储在Linux的虚拟内存中?

Java——适合字符缓冲区的大小

c - 如何在缓冲区中设置最后一个0?

c++ - 如何比较类的数据成员的名称而不是它们的值

string - 将包含 & 符号的公式插入单元格

c - gcc 使用函数指针消除死代码

c++ - 如何获取 ShellExecute 调用的 exe 的返回值

c++ - 链接错误 C++ Libcurl

php - 如何在PHP中获取包含组合字符的Unicode字符串的 "rendered length"?