-1

次の形式のcharバッファがあります。

Somecontent
  .
  .
Content-Length: 1570

MoreContent
  . 
  .
EndofContent

より多くのコンテンツの部分を他の何かに置き換えたいと思いますXyz。しかし、content-lengthの値をxyzの新しい長さに変更する必要があります。また、より多くのコンテンツをxyzに置き換える必要があります。

content-length未満のコンテンツを抽出して変更することはできましたが、元のバッファーに戻すことが問題でした。

出力は次のようになります。

    Somecontent
      .
      .
    Content-Length: 100

    xyz

strstrを使用してcontent-lengthの場所を見つけ、その前に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)「Content-Length」を更新します。ブランクパッド、同じ#/桁を維持します。

6)出来上がり!終わり。

于 2013-01-05T06:26:23.877 に答える