ページ 11

ヘッダファイル作成など

Posted: 2014年10月14日(火) 15:52
by sumino
名前、チーム背番号、チームコードを入力し、チーム情報の登録か表示を入力します。

登録時は入力された個人情報をサブ関数(別のソースプログラム)へ渡す。
(引数:人数、個人情報)
このとき、個人情報及び人数はファイルの該当所属データを含めてサブ関数へ渡す。
サブ関数からの結果をファイルへ格納する。

結果を出力する。

サブ関数の引数で渡された個人情報をチームごと、背番号順にする。

以下のような結果したいです。
チーム    背番号   名前
ひまわり   1      山田典子
        2      青柳裕子 
さくら     5      鈴木花子
ばら      10      佐藤佳子
その他    15 相川祥子




C言語のヘッダファイルについて質問です。

チームコード  チーム
010       ひまわり
020       さくら
030       ばら
040       その他

のヘッダファイル(hdteam.h)を作成したいのですが、

コード:

/*hdteam.h*/
void file(){

struct team{
	char code[20];		// チームコード
	char meisyo[20];	// チーム名称
	char number[20];	// チーム背番号
	char name[20];		// 氏名
};

team dd[100];			

team dt[5]={{"010","ひまわり"},
			  {"020","さくら"},
			  {"030","ばら"},
			  {"040","その他"}};
}
まで作成しました。
自作のヘッダファイルの作り方がいまいちわかっていません。。
どなたか初心者にもわかり易く解説していただけると助かります。
またこの問題を順々に解いていきたいので、ヘッダファイルからお願い致します。

Re: ヘッダファイル作成など

Posted: 2014年10月14日(火) 21:26
by 超初級者
team
という構造体の定義は
あるものの、
team
という型の定義が
ないので、
コンパイルが通りません。

よしんば、コンパイルが通るように
修正したとしても、
そもそも、ヘッダーファイルに
関数の実体を書くのは
あまりよろしくないと思います。
プロトタイプ宣言を書くのは、
ごく普通ですけど・・・。

Re: ヘッダファイル作成など

Posted: 2014年10月15日(水) 11:06
by usao
これって何かの課題なのでしょうか?

ヘッダ云々以前に
とりあえずファイルを分けずに単一のソースファイルに全て書く形であれば
目的の動作を行うプログラムを作れるのでしょうか?

「最初にヘッダを書こう→何をどう書いたらよいのか?」という形で行き詰っているならば
【まずは上記のような形(単一ソースファイル)でプログラムを仕上げ,その後で複数のファイルに分割する】
という方向性で行ってみてはいかがでしょう?

(「ヘッダに何をどう書けばいいのかわからない」というのは
 「実際にどんなデータ型や関数があって どのように情報をやりとりするのか…」といったことが
 頭の中で明確になっていないからだと思ので.)

Re: ヘッダファイル作成など

Posted: 2014年10月15日(水) 11:54
by LL
書き方が分からないと言うのはおそらくヘッダーのコーディングルールが分からないと言うことでしょうか?
質問と書かれているコードを見る限りCのコーディングルールその物を理解されていない様ですね。
まずはそこから勉強するべきです。

コード:

/*hdteam.h*/
void file(){
 
struct team{
    char code[20];      // チームコード
    char meisyo[20];    // チーム名称
    char number[20];    // チーム背番号
    char name[20];      // 氏名
};
 
team dd[100];           
 
team dt[5]={{"010","ひまわり"},
              {"020","さくら"},
              {"030","ばら"},
              {"040","その他"}};
}
ですが、ぱっと見

コード:

/*hdteam.h*/
#ifndef HDTEAM_H_
#define HDTEAM_H_
//ヘッダーファイルは常にインクルードガードを書くように意識し、
//初歩的な多重インクルードミスを防ぐように意識する(場合にもよるけど)


//関数のプロトタイプ宣言。中身はcppに書く
void file(void);

//構造体
struct team{
    char code[20];      // チームコード
    char meisyo[20];    // チーム名称
    char number[20];    // チーム背番号
    char name[20];      // 氏名
};
 

//中身はcppファイルの中に書きましょう。以下は全部いらない
//eam dd[100];           
//team dt[5]={{"010","ひまわり"},
//             {"020","さくら"},
//              {"030","ばら"},
//             {"040","その他"}};

#endif
自分であれば以下のファイル構成にします。
hdteam.h  //自作の関数のプロトタイプ宣言や構造体の宣言
hdteam.cpp   //同ヘッダーファイルのプロトタイプ宣言した関数の処理(中身)など。当然プロトタイプ宣言した関数の中身を書くのでhdteam.hをインクルード
main.cpp //main関数の中身を書く。自作した別ファイルの関数を使うので当然ここにもhdteam.hをインクルード

下記のサイトでコーディングルールに関する記述がありますのでご参考に。これを理解できるようになれば
自然とヘッダーに何書けばいいか考えつくはずです。
http://robolin.jp/wiki/cpp-style-guide