PAIさんへ
>では、この条件下でやりたい事を実現するには
>判別用のメンバー変数を追加するか、
>もしくは、今のメンバーに実際は取り得ない値を設定しておいて、
>それを判定に使用するとかしかできなさそうですね。
私のこのRESに対して、
>それをしたかったらこうしなきゃあかん
> struct MyStructure** pMyStruct = malloc( sizeof (struct MyStructure*) * 10 );
> for( i =0; i<10 ; i++){
> pMyStruct[i] = malloc( sizeof(struct MyStructure*) );
> }
というご指摘だったのでしょうか?
だとすると、構造体の既存メンバーに有り得ない値を設定して、
それを判定するというやり方が取れないという事なのでしょうか?
メンバー int n; に正の値しか代入されないという条件であれば
if( p_MyStruct[i].n == -1 )
で良いと思うのですが?
横からすみませんがこんなかんじですればいいんじゃないの?
dataの処理をYSのyes_or_noで判定するのはだめ?
#define pos 5
struct data
{
int d;
int check;
};
struct YS
{
struct data* D;
int yes_or_no;
};
void input(struct YS* ys,struct data *d)
{
struct data *p = (struct data*)malloc(sizeof(struct data));
*p = *d;
ys->D = p;
ys->yes_or_no = p->check;
}
void test(void)
{
struct YS* ys = (struct YS*)malloc(sizeof(struct YS)*pos);
struct data vol;
int i;
FILE *rf;
if(rf=fopen(test.dat,rb)) return;
for(i=0; i<pos; ++i){
fread(&vol,sizeof(struct data),1,rf);
input(ys+i,&vol);
}
}
> メンバー int n; に正の値しか代入されないという条件であれば
> if( p_MyStruct[i].n == -1 )
> で良いと思うのですが?
これで十分ですね
tさんへ
ご指摘ありがとうございます。
おっしゃる通りで、新たに変数なり構造体を追加する方法ですと
色々と実現方法はあるんですが、
できるだけ既存の構造体、ポインタで何とか判定できないかなと
思って質問させて頂いた次第です。
自分としては、p_MyStruct[i]が構造体配列のポインタであるならば、
p_MyStruct[i] = 0; とか、できないかなってコーディングしました。
配列、構造体、ポインタの知識がごっちゃになっている証拠みたいです。
それまで、何気に使えていた気分になっていたので分かったような
気持ちになっていたのでしょう。
とりあえず、RESありがとうです。
私が初めにやりたかった方法は、この条件下では不可能であると分かりました。
グローバルフラグも使わずに、メンバーも追加無しで
二つのテーブルのデータ格納状況を把握しようとしたのが無理がありましたね。
そのおかげで、私の理解不足もよく分かりましたし。
結局、二つのテーブルへ格納が完了した後で
条件によって、未格納となったテーブルに対して
どちらが未格納でどちらに格納済なのかを持たせる事にしました。
それを、別のところで判定する事にします。
RESくださった皆さん、どうもありがとうございました。
お役に立てて光栄です。
そして、補足。
>if(rf=fopen(test.dat,rb)) return;
if(!(rf=fopen(test.data,rb))) return;