どのようなレコード構成でもfillerという項目はスペースで埋める関数
C言語の話です。
A,B 二つのファイルにテキストのデータを書き込みます。
レコードを何件も書き込んでいくのですが、レコードとレコードは連続して書き込んでいきます。
各ファイルのレコードの構成を表す構造体が次のように定義されています。
A_RECのほうはAファイルで、B_RECのほうはBファイルです。
typedef struct {
char rec_kbn[1];
char num[16];
char filler[3];
}COM, *COMp;
typedef struct {
COM com;
char a1[8];
char a2[2];
char a3[9];
char filler[11];
}A_REC, *A_RECp;
typedef struct {
COM com;
char b1[3];
char b2[15];
char filler[22];
}B_REC, *B_RECp;
AとBのレコード構成は違いますが、
fillerというメンバは必ず空白(スペース)で埋めなくてはいけません。
fillerというメンバに対して何もしなかったら、そこには何が入っているのでしょうか。
ヌル文字('\0')で埋まっているのでしょうか。それとも、特定できないごみでしょうか。
空白で埋まっていないなら、空白で埋めることになるのですが、
fillerを空白で埋めるという操作をまとめて一つの関数にできないでしょうか。
どんな構造体(あるいは構造体のポインタ)を受け取っても、fillerというメンバは空白で埋めるという関数は作れますか。
やはり、fillerの位置やサイズは引数として受け取らなければ、そのような関数は作れませんか。
typedef struct {
char rec_kbn[1];
char num[16];
char filler[3]=" "; /* ダブルクォーテーションの間はスペース3つ */
}COM, *COMp;
このようにすることはできますか。できるならば、ちゃんと意図したとおり、空白で埋められているのでしょうか。
なお、*COMpや*A_RECpや*B_RECpですが、それは使わなくてもきまりごととして書くことになっています。
よろしくお願いいたします。
お礼
ありがとうございました!