【发布时间】:2013-02-17 00:04:14
【问题描述】:
我有一个简单的结构,称为条目定义,其中包含姓名和年龄。给定这些结构的数组,我想根据年龄对数组进行排序。
以下是我尝试应用它的尝试,目前我什至无法编译它。我认为我的指针逻辑在 if 语句比较和随后的指针交换中都不正确。我尝试了各种方法来做同样的事情,但我没有得到任何地方。我对 C 很陌生,我仍在努力理解指针,所以这可能是我误解的基本内容。谁能在下面解释我做错了什么?
任何帮助将不胜感激。
#include <stdio.h>
struct entry {
char name[15];
int age;
};
void entrySort( struct entry *dict);
void entrySort( struct entry *dict){
int i,j; // counters
int ct = 4;
struct entry *tmp; // temporary holder
for( i = 0; i < ct; i++){
for( j = 0; j < ct; j++ ){
if ((*dict[i].age) > (*dict[j].age)){
tmp = (dict + i);
(dict+i) = (dict+j);
(dict+j) = tmp;
}
}
}
int main (void){
int ct = 4, i;
struct entry reg[4] =
{{ "John", 24 },
{ "Alan", 18 },
{ "Jim", 40 },
{ "Sarah",32 }};
entrySort(reg);
for( i = 0; i < ct; i++)
printf("name: %s. Age: %d\n", reg[i].name, reg[i].age);
return 0;
}
【问题讨论】:
-
你能用
qsort吗?会容易很多。 -
主要目标不是排序本身,更多的是弄清楚如何正确使用指针。
标签: c function pointers structure