c - 我应该如何使用链接列表创建地址簿?

标签 c list file linked-list

所以我有一个任务是用 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/

相关文章:

file - 为什么在索引大文件时Lucene会导致OOM?

C - 写入文件的字符出现次数

c - execvp 函数无需路径即可工作

java - 如何根据 Json 文件创建列表列表

iphone - 从 NSData 读取 NSNumber

python - 如何从 python 中的列表中获取第一个值和最后一个值?

java - 在Hbase中存储列表数据?

java - 可运行的 jar,将参数传递给 jar 中的文件

c 编程 - 在 Ubuntu 中编译和在 Alpine 中编译的区别 - gcc - valgrind

从 C 中的参数中计算单词