構造体は、ヘッダー ファイルinstance.hで次のように定義されます。
typedef struct instance{
char *a;
char *b;
int c
} Instance;
関数があります: ファイル instance.c のInstance *get_instance(FILE *fd) は、stdin からデータを読み取り、構造体インスタンスのメンバー a、b、および c に解析します。
私が使う:
while (fgets(buffer, sizeof(buffer)-1, fd) != NULL && (nlines != 4))
stdin から 4 行を読み取り、それを char 配列と int に解析します。
stdin からの入力の形式は次のとおりです。
instance1 info
instance1 info
instance1 info
instance1 info
instance2 info
instance2 info
instance2 info
instance2 info
... and so on
これが、解析するためだけに 4 行で読み取る理由です。
この関数を main.c で呼び出します。
Instance *ip;
while ((ip = get_instance(stdin)) != NULL) {
// print info in ip
}
instance1 情報、次に instance2 情報、次に instance3 情報などを出力したい...
ただし、その間に get_instance が再度呼び出されると、instance1 の情報が繰り返し出力されます。
get_instance 関数が最後に読み取った場所 (つまり 4 行目) を「記憶」し、今回は 5 行目から読み取る方法はありますか?