はじめまして。
>typedef struct{
> char cString[50];
> char *cpItem[]; //タイプ/処理名/置換先項目/置換元項目/デフォルト値/
>}typChangePrm;
まず質問ですが、コンパイラはなんでしょうか?
いわゆるANSI-C (ISO-C89)では上のコードは通りません。
ISO-C99なら通ります。gccにも似たような独自拡張があったような。
>↑のような構造体の中のポインタ配列のreallocの方法がわからず苦戦しております。
で、単にcpItemを可変個確保したいだけなら、このページが参考になるでしょう。
http://seclan.dll.jp/c99d/c99d04.htm#dt19990726
確保するサイズは sizeof(typChangePrm) + sizeof(char*) * num ですね。
ただ、それ以前の問題として、こういう構造体をrealloc()する時は、
「この構造体を指しているポインタはないか」ということを意識する必要があります。
realloc()するとアドレスが変わることがあるため、これを指しているポインタがあると
そっちも書き換えてやらなければいけません。
それが難しいのなら、可変長構造体を使うのではなく、この構造体に
可変長配列へのポインタを持たせるべきでしょう。
typedef struct{
char cString[50];
char **cpItem; // この先の領域をrealloc()する。
}typChangePrm;
# ところでcpItemの数はどっかで保持してるんでしょうか。