该结构在头文件instance.h中定义,如下所示:
typedef struct instance{
char *a;
char *b;
int c
} Instance;
我有一个函数: 文件 instance.c 中的实例 *get_instance(FILE *fd) 从标准输入读取数据并将其解析为结构实例中的成员 a、b 和 c。
我用:
while (fgets(buffer, sizeof(buffer)-1, fd) != NULL && (nlines != 4))
从标准输入读取 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 行读取这次?