[c言語]main関数とその他の関数とを別のファイルに分割(main.cとoperation.c)し、もう一つ、関数のプロトタイプ宣言を行うヘッダーファイル(structure.c)を作成、合計3つのファイルとなったプログラムをコンパイルし

ベストアンサー

0

その他の回答(1件)

1

read_csvやinit関数の記述があっちとこっちで違うぞどうしたらいいの? ということなので、記述を合わせます。 とりあえず、プロトタイプの記述は関数定義の先頭をそのまま持ってきて{ }を外して;をくっつけるのが間違いがなく、手っ取り早いです。 つまり、 int read_csv(char input_data[49][50]){/*中身*/} から宣言としては int read_csv(char input_data[49][50]); を書けばまずはOK。 「思う」で間違いを言っている方もいらっしゃいますが、プロトタイプ宣言の引数は型情報があればよくて仮引数名は不要です。しかし、逆に仮引数名があっても無視されるだけなので、「この引数は何の役割?」のメモとして書いておくことの方が多いように思います。 また、配列は、配列の先頭要素へのポインタとして関数に引き渡されますから、配列を渡す引数はポインタに書き換えできます(というか配列で書いてもポインタに解釈される)。 これらの規則を考えると、以下でも皆等価。書けなくても読めるようになっておいたほうがよいでしょう。 int read_csv(char[49][50]);//仮引数名は不要。型名だけの記述 int read_csv(char input_data[][50]); //配列はポインタとして扱われるので上位の要素数は記述しなくてもよい。記述しても無視される。 int read_csv(char[][50]);//仮引数無しバージョン int read_csv(char (*input_data)[50]);//ポインタとして扱われるので、ポインタとして記述できる int read_csv(char (*)[50]); //仮引数無しバージョン

1人がナイス!しています