2011-12-08 83 views
0

我必须组织一个结构或一些人的名字,姓氏和年龄的数组,然后按字母顺序组织它们,使用字符串库将它们从输入文件写入输出文件。C - 数组/结构讨论

这是我明天下午的实验室的一部分,我的电讯管理局说我们可能会被要求完成上述任务。我试图从那些比C更有经验的人那里得到意见或建议,所以我会比上一次我没那么热的实验室做得更好。

我卡住了,我应该从哪里开始的任何建议?

+5

发布您的尝试到目前为止,以便我们有一些工作。 –

+0

如果这是作业,请添加[标签:作业]标签。 (而且我不认为[tag:discussion]标签是特别有意义的。) –

+0

这不是作业,我前几个小时前的帖子是。这对我明天下午的实验室来说是一个典型的例子,在这个实验室里,我的技术助理说我们可能会被要求完成我上面提到的任务。我试图从C中获得比我更有经验的个人的意见或建议。我应该把它标记为不同的东西吗? –

回答

1

那么,读取和写入输入和输出应该是无可挑剔的(您打开文件,读/写,然后在完成后关闭它)。

诀窍是让那些讨厌的字符串排序。 我看strnig排序的方式是一个数组排序的数组。第一个数组级别是对所有结构体的迭代,而第二个是迭代所有结构体的字母(注意有些名称比其他名称长)
1.首先对第一列进行排序 - 首先将所有字母
2.然后所有子列 - 在每个第一个字母组中排序第二个字母
3.重复1 & 2,直到您用完字母排序。

对字母数组的排序与对字节数组(字符串)的排序相同,如果您正在使用像冒泡排序这样的算法,则对子数组的处理是无缝的。

希望这种理念帮助

0

您可以使用strcmp从文件string.h库,它比较两个字符串并返回结果。 您应该从输入文件中读取每个字符串并保存在内存中。你可能会使用一个列表,例如链表。在添加时,您可以按字母顺序组织它们。下面是一个例子:

  1. 取一个列表中的元素。
  2. 将它与新字符串进行比较。
  3. 它应该放在哪里?如果它应该在当前元素之前,请将其放置在当前元素之前。如果它应该在当前元素之后,则对下一个元素执行相同操作。

这是针对您的问题的简单算法。

0

棘手的部分是实现两个字符串的比较。 strcmp函数只会告诉你这些字符串是否相同。你可以遍历char数组来完成它。

完成后,剩下的排序很简单。

+0

实际上,它返回3个不同的值。你可以检查上面的链接strcmp。 – Mikael