所以我有一个在C中建立地址簿的任务,每次程序关闭时都会保存数据(所以我必须使用文件)。此外,我还必须从地址簿文件中读取已存在的任何条目。该程序还应提供按姓名,姓氏,电子邮件等排序的选项。
我想过使用链表来实现它。问题是我不确定是否应该使用链表或哈希表。因为通过使用哈希表我不知道如何能够对数据进行排序。是否可以使用链表并仅通过更改指向下一个条目的指针进行排序?
我还有一个问题。比方说,例如,我使用fgets()
从用户那里得到他的名字,然后将其打印到文件中:fprintf (Addressbook, "Name: %s", addressbook.name);
。当我尝试从文件中读取并将预先存在的条目加载到我的链接列表中时,如何排除文件中的“名称:”部分?
例如,如果用户输入名称“Chris”,那么它将被写入文件,如下所示:Name: Chris
。但是在我关闭程序并再次执行它之后,我想从文件中读取并仅在addressbook.name
中加载名称“Chris”。
总的来说,我对从文件中读取并通常加载链接列表感到困惑
非常感谢任何帮助。谢谢你的时间!
答案 0 :(得分:2)
第一个问题:地址簿的链接列表或哈希表:
答案:SQL。真。这种如何存储和检索数据的难题有一个答案,永远不要自己滚动*。
*除非您是学生并且学习如何滚动。
你是谁。这是一项任务。所以这两个选项都是“错误的”,但由于它只是一个学习练习,所以请继续。无论男人。是的,请使用链接列表,并在每次要使用其他参数对其进行排序时重新排列节点。这听起来像是一种有趣但令人恐怖的经历。
第二个问题:当我尝试从文件中读取并将预先存在的条目加载到我的链接列表中时,如何排除文件中的“名称:”部分?
fscanf(f_file, "Name: %s", nameArrayTypeThing);
希望他们的名字中没有空格,文件没有损坏。这对任务来说已经足够了。