gpt4 book ai didi

c - 从文件读取到链表

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:41 25 4
gpt4 key购买 nike

好的,这就是我的问题,我有 2 个结构,客户端和项目。基本上项目是客户端内的嵌套列表。我无法弄清楚如何从文件中读取所有项目并在阅读时将它们链接到客户端。我知道如果只有我有客户端结构并且必须只从文件客户端读取它是如何完成的,但它非常复杂,至少对我来说,当我有内部列表时这样做。我如何将文件中的项目与客户分开,以便在我阅读它们并重新链接程序时知道输入是什么?我不想计算有多少项目链接到每个客户以及在保存之前有多少客户。这是我的结构和保存函数。

struct item
{
char item_name[30];
char item_state[30];
float item_price;
char item_status[30];
float item_price_if_not;
struct item *next;
};
struct client
{
char client_name[30];
char client_last_name[30];
struct item *item_data;
struct client *next;
};
void savetxt(struct client *head)
{
FILE *f;
f = fopen("data.txt","w");
if(f == NULL)
{
printf("error");
}
struct item *CurrentItem = head->item_data;
while(head != NULL)
{
fprintf(f,"%s %s\n",head->client_name,head->client_last_name);
while(CurrentItem != NULL)
{

fprintf(f,"%s %s %f %s %f ",CurrentItem->item_name,CurrentItem->item_state,CurrentItem->item_price,CurrentItem->item_status,CurrentItem->item_price_if_not);
CurrentItem = CurrentItem->next;
}
head = head->next;
if(head != NULL)
{
CurrentItem = head->item_data;
}
fprintf(f,"\n\n");
}
fclose(f);
return NULL;
}

最佳答案

有很多方法。考虑使用 '('')'

您需要一些定界符或关键字来衬托数据。通过用分隔符封装每个结构,读取可以确定新级别的结构何时开始或完成。

int foo(void) {
...
fputc('(', f);
while (head != NULL) {
fputc('(', f);
fprintf(f, "%s %s\n", head->client_name, head->client_last_name);
while (CurrentItem != NULL) {
fputc('(', f);
fprintf(f, "%s %s %f %s %f ", CurrentItem->item_name,
CurrentItem->item_state, CurrentItem->item_price,
CurrentItem->item_status, CurrentItem->item_price_if_not);
CurrentItem = CurrentItem->next;
fputc(')', f);
}
head = head->next;
if (head != NULL) {
CurrentItem = head->item_data;
}
fputc(')', f);
fprintf(f, "\n\n");
}
fputc(')', f);
}

关于c - 从文件读取到链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293124/

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