ここから本文です

C言語の構造体について

kns********さん

2009/12/2523:12:16

C言語の構造体について

前も、質問して教えてもらったのですが
エラーが出てしまいます。
ですから、再度質問させてください
健康診断結果を出力しようとしているのですが
下記のように入力するとエラーが出てしまいますどうしてエラーが出るのか教えてください


test.c

#include<stdio.h>
#include"student.h"
#include"myfunc.h"

void displayStudent(struct Student *suzuki);
int main(void)
{
struct Student suzuki;

suzuki.shinchou = 153.6; //身長を153.6に設定
suzuki.taiju = 53.2; //体重を53.2に設定
suzuki.shiryoku[0] = 1.0; //右目の視力は1.0
suzuki.shiryoku[1] = 1.2; //左目の視力は1.2
suzuki.chouryoku[0] = 1; //聴力は左右とも正常
suzuki.chouryoku[1] = 1;
suzuki.mushiba = 3; //虫歯の本数を3本に設定

displayStudent(&suzuki);

return 0;
}


displayStudent.c

//健康診断結果をまとめて出力する方法

void displayStudent(struct Student *suzuki)
{
printf("%02f\n",suzuki->shinchou);
printf("%02f\n",suzuki->taiju);
printf("%02f\n",suzuki->shiryoku[0]);
printf("%02f\n",suzuki->shiryoku[1]);
printf("%d\n",suzuki->chouryoku[0]);
printf("%d\n",suzuki->chouryoku[1]);
printf("%d\n",suzuki->musiba);
};


myfunc.h

//ヘッダファイル

void displayStudent(struct Student *suzuki);


student.h

//健康診断の項目が入ったヘッダファイル(構造体)

struct Student
{
double shinchou;
double taiju;
double shiryoku[2];
int chouryoku[2];
int mushiba;
};

補足エラーは下記のように出ました

C:\MyFirstC\MySrc>gcc test.c displayStudent.c
displayStudent.c:3: warning: `struct Student' declared inside parameter list
displayStudent.c:3: warning: its scope is only this definition or declaration, w
hich is probably not what you want
displayStudent.c: In function `displayStudent':
displayStudent.c:5: error: dereferencing pointer to incomplete type //5行目~11行目まで

閲覧数:
5,835
回答数:
4
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

ies********さん

2009/12/2523:31:01

エラーメッセージを読める頭が無いからじゃないの

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

rhi********さん

2009/12/3007:10:50

/*
//@_のついた2箇所にバグあり、これだけで結果は出る
ファイルを分けたら、コンパイル時に、必要なファイル
がコンパイラに見えるようにしないと可哀想です。
見えさえすればコンパイラは何とかします。
*/
#include<stdio.h>

typedef_struct_Student{
__double__shinchou;
__double__taiju;
__double__shiryoku[2];
__int_____chouryoku[2];
__int_____mushiba;
}_STDNT;

void_displayStudent(STDNT_*suzuki);

int_main(void){
__STDNT_suzuki;

__suzuki.shinchou_=_153.6;__//身長を153.6に設定
__suzuki.taiju_=_53.2;______//体重を53.2に設定
__suzuki.shiryoku[0]_=_1.0;_//右目の視力は1.0
__suzuki.shiryoku[1]_=_1.2;_//左目の視力は1.2
__suzuki.chouryoku[0]_=_1;__//聴力は左右とも正常
__suzuki.chouryoku[1]_=_1;
__suzuki.mushiba_=_3;_______//虫歯の本数を3本に設定

__displayStudent(&suzuki);

__return_0;
}
//健康診断結果をまとめて出力する方法
void_displayStudent(STDNT_*suzuki){
__printf("%02f\n",suzuki->shinchou);
__printf("%02f\n",suzuki->taiju);
__printf("%02f\n",suzuki->shiryoku[0]);
__printf("%02f\n",suzuki->shiryoku[1]);
__printf("%d\n",suzuki->chouryoku[0]);
__printf("%d\n",suzuki->chouryoku[1]);
__printf("%d\n",suzuki->mushiba);_//@
}_//@
/*_出力:
153.600000
53.200000
1.000000
1.200000
1
1
3
*/

f_s********さん

編集あり2009/12/2600:25:52

★少なくても1件、スペルミスがあるようですが!!!

displayStudent.c

//健康診断結果をまとめて出力する方法

void displayStudent(struct Student *suzuki)
{
printf("%02f\n",suzuki->shinchou);
printf("%02f\n",suzuki->taiju);
printf("%02f\n",suzuki->shiryoku[0]);
printf("%02f\n",suzuki->shiryoku[1]);
printf("%d\n",suzuki->chouryoku[0]);
printf("%d\n",suzuki->chouryoku[1]);
printf("%d\n",suzuki->mushiba); // musiba -> mushiba FS091226A
};

★きっと、natriumさんの件の方が致命的ですね。

nat********さん

2009/12/2600:12:43

displayStudent.c で student.h をインクルードしてないからでは?

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる