所以我有一个任务是用 C 语言构建一个地址簿,每次关闭程序时都会保存数据(所以我必须使用文件)。另外,我还必须从地址簿文件中读取已存在的任何条目。该程序还应该提供按姓名、电子邮件等排序的选项。
我想用链表来实现这个。问题是我不确定是否应该使用链表或哈希表。因为通过使用哈希表,我不完全知道如何对数据进行排序。可以使用链表并仅通过更改指向下一个条目的指针来排序吗?
不过我还有一个问题。举例来说,我使用 fgets()
从用户那里获取他的名字,然后将其打印到文件中,如下所示:fprintf (Addressbook, "Name: %s", addressbook .name);
.当我尝试从文件中读取并将预先存在的条目加载到链接列表中时,如何排除文件中的“名称:”部分?
例如,如果用户输入名称“Chris”,那么它将被写入文件,如下所示:Name: Chris
。但是在我关闭程序并再次执行它之后,我想从文件中读取并仅在 addressbook.name
中加载名称“Chris”。
总的来说,我对从文件中读取内容并通常加载链接列表感到非常困惑
任何帮助将不胜感激。感谢您的宝贵时间!
最佳答案
第一个问题:地址簿的链表或哈希表:
答:SQL 。真的。这种如何存储和检索数据的难题有一个答案,并且永远不要自己滚动*。
*除非您是一名正在学习如何滚动的学生。
你是哪一个。这是一项任务。所以这两个选项都是“错误的”,但由于这只是一个学习练习,所以就去做吧。不管是什么男人。是的,使用链表并在每次您想按不同参数对其进行排序时重新排列节点。这听起来是一次有趣但又可怕的经历。
第二个问题:当我尝试从文件中读取并将预先存在的条目加载到链接列表中时,如何排除文件中的“Name:”部分?
fscanf(f_file, "Name: %s", nameArrayTypeThing);
希望他们的名字中没有空格并且文件没有损坏。对于作业来说这已经足够了。
关于c - 我应该如何使用链接列表创建地址簿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23636024/