gpt4 book ai didi

c - 我的 C 函数从 stdin 读取并解析数据以存储在结构体的成员中。每次调用时如何读取输入的下一部分?

转载 作者:行者123 更新时间:2023-11-30 17:57:14 25 4
gpt4 key购买 nike

该结构体在头文件 instance.h 中定义如下:

typedef struct instance{
char *a;
char *b;
int c
} Instance;

我有一个功能:实例 *get_instance(FILE *fd)在文件instance.c中,它从stdin读取数据并将其解析为struct Instance中的成员a、b和c。

我使用:

while (fgets(buffer, sizeof(buffer)-1, fd) != NULL && (nlines != 4)) 

从 stdin 读取 4 行并将其解析为 char 数组和 int。

来自标准输入的输入具有以下格式:

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
}

我希望它打印实例1信息,然后打印实例2信息,然后打印实例3信息等等...

但是,当再次调用get_instance时,它会重复打印instance1信息。

有没有办法让 get_instance 函数“记住”它上次读取到的位置(即第 4 行)并从第 5 行读取这次?

最佳答案

试试这个:在循环 get_instance() 之前先获取/保存来自 stdin 的所有输入。

我的猜测(没有实际的 get_instance() 实现)问题是在 get_instance() 循环中调用 fgets() 循环。而 get_instance() 无法处理这个问题。

关于c - 我的 C 函数从 stdin 读取并解析数据以存储在结构体的成员中。每次调用时如何读取输入的下一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com