C400

41. memmove による文字列の挿入

僭越ではあるが他社類似製品と弊社EnterpriseServer のアーキテクチャーの基礎記述として

全く異なっているのは HTML テンプレートに自由に文字列を挿入することができる技術である。

RPG においても、それは可能ではあるが RPG はストリーム・バッファーを扱うにしては適して

いないし、挿入となると骨の折れる作業となる。

ここに製品の開発言語を ANSI-C で行う利点が製品の差となって現れてくる。

それはともかく最近、頻繁に利用している文字列への挿入技術をひとつ紹介しよう。

memmove を使えば、簡単に文字列を移動させることができる。

そこで挿入すべき場所を memmove によって開けて、後は単なる memcpy で文字列を挿入

すればよいだけである。

trlen = strlen(&tmpbuf[pos]);                                   
dsplen = strlen(m_value);                                       
memmove(&tmpbuf[pos+dsplen], &tmpbuf[pos], trlen);/* 間を空ける */
memcpy(&tmpbuf[pos], m_value, dsplen); /* テキストを挿入する */
【 解説 】

int pos が挿入位置であり、挿入したい文字列が m_value である。

バッファー tmpbuf の pos 移行を memmove によって後ろへずらしておいてから

m_value を tmpbuf の pos の位置に memcpy で挿入している。