我想对一个strut-array进行排序,我不断遇到某个问题而且我不知道为什么
#include <stdio.h>
#include <stdlib.h>
#define STRLEN 20
void BubbleSort(int a[], int array_size);
struct schueler
{
char vorname[STRLEN];
char nachname[STRLEN];
char klasse[6];
char gbdatum[9];
double geld;
};
int main()
{
int anz;
int count = 1;
printf("Wieviele Schueler moechten Sie eingaben: ");
scanf("%d",&anz);
struct schueler personen[anz];
while(count <= anz)
{
printf("\n\nSchueler %d:\n\n", count);
printf("\nNachname: ");
scanf("%s",&personen[count].nachname);
printf("\nVorname: ");
scanf("%s",&personen[count].vorname);
printf("\nKlasse: ");
scanf("%s",&personen[count].klasse);
printf("\nGeburtsdatum");
scanf("%s",&personen[count].gbdatum);
printf("\nGeld: ");
scanf("%d",&personen[count].geld);
count++;
}
BubbleSort(&personen, anz);
system("CLS");
for(count = 1; count <= anz; count++)
{
printf("Schueler %d:\n\n", count);
printf("Nachname: ", personen[count].nachname);
printf("Vorname: ", personen[count].vorname);
printf("Klasse: ", personen[count].klasse);
printf("Geburtsdatum: ", personen[count].gbdatum);
printf("Geld: ", personen[count].geld);
}
}
void BubbleSort(int a[], int array_size)
{
int i, j, temp;
for (i = 0; i < (array_size - 1); ++i)
{
for (j = 0; j < array_size - 1 - i; ++j )
{
if (a[j].nachname > a[j+1].nachname)
{
temp = a[j+1].nachname;
a[j+1].nachname = a[j].nachname;
a[j].nachname = temp;
}
}
}
}
问题是
错误:在非结构或联合的情况下请求成员'nachname'
答案 0 :(得分:1)
error: request for member 'nachname' in something not a structure or union
if (a[j].nachname > ...
a
是指向int
而非指向struct schueler
的指针,因此不所指的成员{ {1}}。
修复此更改
nachname
是
void BubbleSort(int a[], int array_size)
并像这样称呼它
void BubbleSort(struct schueler a[], int array_size)
答案 1 :(得分:0)
要对数组进行排序,请使用qsort
。我对用于比较字符串(>
)的a[j].nachname > a[j+1].nachname
操作不是很清楚,但这是一个副作用