電子書籍の厳選無料作品が豊富!

C言語初心者です。
今回の質問は入力された構造体のメンバのデータを型の異なる構造体に代入したいのですが、毎回コンパイラにおこられてしまいます(汗)具体的には
typedef struct MSG{
longint type;
int flg;
int Dt[64];
}t_msg;
このDt[64]を以下の構造体に代入します。
typedef struct SC_MSG{
char a;
char b;
short c;
char d;
char e;
short f;
}t_sc_msg;

その際、異なる関数で処理するため、
main(){
foo(&t_msg);
};

void foo(t_msg *pt_msgdt){
t_sc_msg = (*pt_msgdt+8);

ココがエラーになってしまいます。
何か、根本的な間違いをおかしている気がします。
ご指導の方、宜しくお願いします。
ちなみにOSはLinuxでコンパイラーはgccです。

A 回答 (11件中11~11件)

>foo(&t_msg);


t_msg は struct MSG の typedef なので、引数に渡せません。

> *pt_msgdt+8
*pt_msgdt の型は struct MSG です。これに 8 を加算することはできません。

>t_sc_msg = (*pt_msgdt+8);
同じく t_sc_msg も struct SC_MSG の typedef です。代入できません。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。


>*pt_msgdt の型は struct MSG です。これに 8 を加算することはできません。
なんとかt_msg.Dt[64]だけ抜き出そうとしているのですが・・。
もう少し試行錯誤してみます。

お礼日時:2007/12/24 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!