【发布时间】:2014-05-13 15:54:47
【问题描述】:
所以我有一个任务是在 C 中构建一个地址簿,每次关闭程序时都会保存数据(所以我必须使用文件)。此外,我必须从通讯簿文件中读取任何已经存在的条目。该程序还应提供按姓名、姓氏、电子邮件等排序的选项。
我想过使用链表来实现这一点。问题是我不确定我应该使用链表还是哈希表。因为通过使用哈希表,我并不完全知道如何对数据进行排序。是否可以使用链表并仅通过更改指向下一个条目的指针进行排序?
不过,我还有一个问题。例如,我使用fgets() 从用户那里得到他的名字,然后将其打印到文件中,如下所示:fprintf (Addressbook, "Name: %s", addressbook.name);。当我试图从文件中读取并将预先存在的条目加载到我的链接列表中时,我将如何排除文件中的“名称:”部分?
例如,如果用户输入名称“Chris”,那么它将被写入文件中,如下所示:Name: Chris。但是在我关闭程序并再次执行它之后,我想从文件中读取并仅在addressbook.name 中加载名称“Chris”。
总的来说,我对从文件中读取并通常加载我的链表感到很困惑
任何帮助将不胜感激。感谢您的宝贵时间!
【问题讨论】:
-
关于第二个问题,不要把
Name:放在文件里。你不是在写一些报告文件;它是一个数据存储文件。如果您希望您的 程序 显示Name:,那是一回事,但我认为将冗余转储到磁盘没有什么意义,尤其是当它一开始就不需要时。 -
在询问之前至少尝试something不是更好吗?然后你可以展示你到目前为止所做的尝试,并提出关于改进的问题。这将使讨论更加有趣。
-
为什么要使用文件呢?老实说,既然你无论如何都必须提供排序功能:简单地使用数据库不是更容易吗:无论如何,MySQL C API 很容易学习
标签: c list file linked-list