C言語構造体、ファイル入出力に関する質問です
IPA辞書の一部が保存されたAdverb.csvファイルから個々の単語に関するデータを読み込んで別のファイルに保存するという大学の課題があり、Cで構造体を定義してプログラムを作っている途中なんですが、やりかたがわからなくて困ってます。
Adverbファイルの中身の一部 単語,左文脈id,右文脈id,単語コスト,素性列
・
・
の,153,153,10163,助詞,格助詞,一般,*,*,*,の,ノ,ノ
ポプラ,1285,1285,3539,名詞,一般,*,*,*,ポプラ,ポプラ,ポプラ
・
・
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
struct zisho{
char tangoname[80];
int left_id_number;
int right_id_number;
char hinshi[][];
char katuyou[][];
}list[];
FILE *fin;
if((fin = fopen("Adverb.csv", "r")) == NULL){
printf("ファイルが開けません");
exit(1);
}
・ファイルへの書き込みはfor文if文をひたすら使っていくしかないのでしょうか。
・ファイルの中身が1000行近くあるので、配列ではなくmallocを使うべきでしょうか。
・カンマ区切りなのでstrtok関数を使うのでしょうか。
わかる方、是非とも教えてください。
できれば完成プログラムをのせていただけるとありがたいです。
お礼
早速の回答ありがとうございます。 > 本当にCの範囲でなければならないというのなら、アウト これは、「構造体の定義と初期化は同時にできるが、これにより実体となるため、共用のヘッダファイルでやろうとしている時点でアウト。やるなら関数ごとに別名ですべし。」という理解でよろしいでしょうか。 これを前提として、Cスタンダードな宣言時の{ }を使った初期化をすることにしました。 もともと初期化忘れのようなケアレスミスが減るといいなぁ・・・と考えて実験していたので、そもそもミスしないよう関数設計で気をつけよう、という教訓になりそうです。 C++ ・・・便利ですね。 C++、ちょろっとだけ、文法の半分くらいを勉強したことはあるんですが、まだまだ理解に至らぬまま、C++0Xなんて出てしまって圧倒されている状況です。 自分のレベルが上がったら、使ってみたいと思います。 ありがとうございました。