在C中的特定模式之后替换文本

时间:2013-01-05 06:15:12

标签: c char logic

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

Somecontent
  .
  .
Content-Length: 1570

MoreContent
  . 
  .
EndofContent

我想用其他内容Xyz替换更多内容部分。但是现在我需要将内容长度值更改为新的xyz长度。还有更多的内容必须被xyz取代。

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

输出应为:

    Somecontent
      .
      .
    Content-Length: 100

    xyz

我尝试使用strstr来查找内容长度的位置,并在此之前使用memcpy复制内容,但它没有工作。谁能建议一种方法。缓冲区位于char *buf;

1 个答案:

答案 0 :(得分:1)

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

在那种情况下:

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

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

3)如果你还不知道新的Content-Length,你可以很容易地计算它的长度(更多内容) - 长度(xyz)

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

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

6)瞧!完成。