free()和链表的使用出错
小弟在C primer plus上面看到一个例子,可是在vs2010中运行它时却出错了。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define TSIZE 45
struct film {
char title[TSIZE];
int rating;
struct film * next;
};
int main(void)
{
struct film * head = NULL;
struct film * prev, * current;
char input[TSIZE];
puts("Enter first movie title:");
while((gets(input)!=NULL)&&(input[0]!='\0'))
{
current = (struct film *)malloc(sizeof(struct film));
if(head == NULL)
head = current;
else
prev->next = current;
current->next = NULL;
strcpy(current->title,input);
puts("Enter your rating <1-10>:");
if((scanf("%d",¤t->rating))==0)
{
puts("Enter error!");
exit(1);
}
while(getchar()!='\n')
continue;
puts("Enter next movie title (empty line to stop):");
prev = current;
}
if(head == NULL)
puts("No data enter!");
else
puts("Here is the movie list:");
current = head;
while(current != NULL)
{
printf("Movie: %s Rating: %d\n",current->title,current->rating);
current = current->next;
}
current = head;
while(current != NULL)
{
free(current);
current = current->next; /* error pointer! */
}
printf("Goodbye!\n");
return 0;
}
这个错误要如何解决啊,