我正在尝试对一个结构体数组中的字符串进行字母顺序排序,然后打印出来,但我的代码不起作用。
我已经花了几个小时来想弄清楚原因,但是一直无法弄清楚。我相信它可能是非常明显的问题,但我只学习了几周编程,所以我无法解决它。
它确实可以编译而没有错误,输出只是原始未排序数组的打印,但没有aardvark,如下所示:boy acumen addle cat affix agar ahoy aigrette ajar 以下是我目前的代码:
我已经花了几个小时来想弄清楚原因,但是一直无法弄清楚。我相信它可能是非常明显的问题,但我只学习了几周编程,所以我无法解决它。
它确实可以编译而没有错误,输出只是原始未排序数组的打印,但没有aardvark,如下所示:boy acumen addle cat affix agar ahoy aigrette ajar 以下是我目前的代码:
#include <stdio.h>
struct entry
{
char word[15];
char definition[50];
};
struct entry dictionary[100] =
{ {"boy", "a boy " },
{"aardvark", "a burrowing African mammal" },
{"acumen", "mentally sharp; keen" },
{"addle", "to become confused" },
{"cat", "a cat" },
{"affix", "to append; attach" },
{"agar", "a jelly made from seaweed" },
{"ahoy", "a nautical call of greeting" },
{"aigrette", "an ornamental cluster of feathers" },
{"ajar", "partially opened" }
};
int main(void)
{
int i;
void dictionarySort(struct entry dictionary[]);
dictionarySort(dictionary);
for(i = 0; i < 10; ++i)
{
printf("%s\n", dictionary[i].word);
}
return 0;
}
void dictionarySort(struct entry dictionary[])
{
int i, k, j;
struct entry temp[100];
for(i = 0; i <= 9; ++i)
{
for( k = 0; dictionary[i].word[k] != '\0'; ++k)
{
if( (dictionary[i].word[k] > dictionary[i+1].word[k] ) )
{
temp[i] = dictionary[i];
dictionary[i] = dictionary[i+1];
dictionary[i+1] = temp[i];
}
}
}
}
如果有任何建议,请不吝赐教。
struct entry
是如何定义的,但如果这是C语言且word
是一个char *
,那么你的比较if(dictionary[i].word[k] > dictionary[i+1].word[k])
将无法正常工作。您需要调用strcmp
函数进行字符串比较。 - Steve Summiti <= 9
-->i < 9
- BLUEPIXYqsort
。如果您需要,我们可以向您展示如何做到这一点。 - Steve Summit