帮忙看下这c程序哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/20 03:44:49
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student
{
char name[30];
long phone;
char addr[50];
struct student *next;
};/////姓名、电话号码和住址

struct student* init(struct student *p)
{
struct student *current=p;
char yorn;
yorn='y';
while(yorn=='y')
{
printf("请输入姓名:\t");
scanf("%s", current->name);
getchar();
printf("请输入电话号码:\t");
scanf("%ld", ¤t->phone);
getchar();
printf("请输入地址:\t");
scanf("%s", current->addr);
getchar();
printf("是否输入下一个?y是,n否\t");
scanf("%c", &yorn);
getchar();
if(yorn=='y')
{
current->next=(struct student *)malloc(sizeof(struct student));
current=current->next;
}
curren

两个地方需要修改:
1. find函数中while(current->next!=NULL)改为while(current)
2. 把main函数中的p->next=NULL删除,p即是链头。

最好再添加一个清理函数,如:
void clear(struct student *p)
{
struct student *cursor = p;

while (cursor)
{
p = p->next;
free(cursor);
cursor = p;
}
}

1. find函数中while(current->next!=NULL)改为while(current)
2. 把main函数中的p->next=NULL删除,p即是链头。

最好再添加一个清理函数,如:
void clear(struct student *p)
{
struct student *cursor = p;

while (cursor)
{
p = p->next;
free(cursor);
cursor = p;
int write(struct student *p)
{
struct student *current;
FILE *stream;
if((stream=fopen("d:\\ghost.dat", "w+"))==NULL)
{
perror("磁盘错误无法写入");
exit(1);
}
do
hdaksj({ncoqdni})
ncoascna====oemqoxzmvo