数据结构,指针交换的问题
#include<stdio.h>#include<string.h>
void add(struct book *fb, int count);
#define MAXTITL 40
#define MAXAUTL 40
#define MAXBKS 10
struct book{
char title[MAXTITL];
char author[MAXAUTL];
float value;
};
int main(void)
{
struct book library[MAXBKS];
int count=0;
int index;
printf("Please enter the book title.\n");
printf("Press [enter] at the start of a line to stop.\n");
while(count < MAXBKS && gets(library[count].title)!=NULL && library[count].title[0] !='\0')
{
printf("Now enter the author.\n");
gets(library[count].author);
printf("Now enter the value.\n");
scanf("%f", &library[count++].value);
while(getchar() !='\n')
continue;
if(count <MAXBKS)
printf("Enter the next title.\n");
}
if(count>0)
{
printf("Here is the list of your books: \n");
for(index=0; index<count; index++)
{
add(&library[0], count);
printf("%s by %s: $%.2f\n", library[index].title, library[index].author, library[index].value);
}
}
else
printf("No books? Too bad.\n");
return 0;
}
void add(struct book *fb ,int count)
{
struct book *temp;
int a, b;
for(a=0; a<count-1; a++)
for(b=a+1; b<count; b++)
if(strcmp((fb+a)->title, (fb+b)->title)>0)
{
temp=fb+a;
(fb+a)=(fb+b);
(fb+b)=temp;
}
}
为什么最后这样的
(fb+a)=(fb+b);
(fb+b)=temp;指针交换是错误的