我有一个char缓冲区,格式如下。
Somecontent
.
.
Content-Length: 1570
MoreContent
.
.
EndofContent
我想用其他内容Xyz
替换更多内容部分。但是现在我需要将内容长度值更改为新的xyz长度。还有更多的内容必须被xyz取代。
我已经能够提取内容长度以下的内容并对其进行修改,但将其放回原始缓冲区对我来说是一个问题。
输出应为:
Somecontent
.
.
Content-Length: 100
xyz
我尝试使用strstr来查找内容长度的位置,并在此之前使用memcpy复制内容,但它没有工作。谁能建议一种方法。缓冲区位于char *buf;
答案 0 :(得分:1)
我认为,当你用“xyz”替换“更多内容”时,你正在替换,“xyz”的结尾是新的“内容结束”。正确?我还假设新的“xyz”不能溢出你的缓冲区,对吗?
在那种情况下:
1)搜索“内容长度”。保存偏移量(例如,变量“ofs1”)。
2)搜索“更多内容”的开头。保存偏移量(例如,变量“ofs2”)。
3)如果你还不知道新的Content-Length,你可以很容易地计算它的长度(更多内容) - 长度(xyz)
4)将xyz复制到更多内容(例如memcpy)
5)更新“内容长度”。空白垫,保持相同的#/位数。
6)瞧!完成。