-1

我有一个 char 缓冲区,其格式如下。

Somecontent
  .
  .
Content-Length: 1570

MoreContent
  . 
  .
EndofContent

我想用其他内容替换更多内容部分Xyz。但现在我需要将内容长度值更改为 xyz 的新长度。此外,更多内容必须由 xyz 替换。

我已经能够提取内容长度以下的内容并对其进行修改,但是将其放回原始缓冲区对我来说一直是个问题。

输出应该是:

    Somecontent
      .
      .
    Content-Length: 100

    xyz

我尝试使用 strstr 查找内容长度的位置,并在此之前使用 memcpy 复制内容,但它没有奏效。任何人都可以提出一种方法。缓冲区在char *buf;

4

1 回答 1

1

我假设,当你用“xyz”替换“更多内容”时,你正在替换,“xyz”的结尾是新的“内容结尾”。正确的?我还假设新的“xyz”不能溢出你的缓冲区,对吗?

在这种情况下:

1) 搜索“内容长度”。保存偏移量(例如,变量“ofs1”)。

2)搜索“更多内容”的开头。保存偏移量(例如,变量“ofs2”)。

3) 如果您还不知道新的 Content-Length,您可以轻松地将其计算为 length(More Content) - Length(xyz)

4) 将 xyz 复制到更多内容(例如 memcpy)

5) 更新“内容长度”。空白垫,以保持相同的#/数字。

6)瞧!完毕。

于 2013-01-05T06:26:23.877 回答