typedef struct vip { vip date; struct Lnode *next; }Lnode,*linklist; Lnode *createlink() { Lnode *head =(Lnode*)malloc(sizeof(Lnode)); Lnode *p = head; int t; FILE * r= fopen("input.txt","r"); if(r==NULL) { printf("打开文件失败!"); return NULL; } while(fscanf(r,"%d",&t)!=EOF) { Londe *q= (Lnode*)malloc(sizeof(Lnode)); q->data=t; p->next=q; p=q; } p->next=NULL; fclose(r); return head; } linklist scanflist() { linklist L; L=(linklist)malloc(sizeof(Lnode)); L->next=NULL; linklist p;int n,i; printf("请输入会员的数量:"); scanf("%d",&n); for(i=0;i<n;i++) { p=(linklist)malloc(sizeof(Lnode)); //创建一个新结点*P printf("请输入会员信息:\n"); printf("身份证号:"); scanf("%s",p->date.sfz); printf("姓名:"); scanf("%s",p->date.xm); //字符串输入 printf("电话:"); scanf("%s",p->date.dh); printf("会员等级:"); scanf("%s",p->date.hydj); printf("优惠政策:"); scanf("%s",p->date.yhzc); p->next=L->next; //使p插入头结点 L->next=p; } return L; //返回链表的头指针 L。 }我这个问题出在哪
时间: 2024-03-11 07:47:54 浏览: 112
typedef struct 用法详解和用法小结
5星 · 资源好评率100%
你的代码中有一些错误:
1. 在结构体定义中,`vip`应该是结构体名,不应该出现在结构体内部。
2. 在函数`createlink()`中,`Londe`应该是`Lnode`的拼写错误。
3. 在函数`scanflist()`中,结构体`vip`的成员变量没有定义,应该在结构体定义中添加相应的成员变量。
下面是修改后的代码:
```c
typedef struct vip {
char sfz[20]; // 身份证号
char xm[10]; // 姓名
char dh[20]; // 电话
char hydj[10]; // 会员等级
char yhzc[20]; // 优惠政策
} Vip;
typedef struct Lnode {
Vip data;
struct Lnode *next;
} Lnode, *LinkList;
LinkList createlink() {
LinkList head = (LinkList)malloc(sizeof(Lnode));
Lnode *p = head;
int t;
FILE *r = fopen("input.txt", "r");
if (r == NULL) {
printf("打开文件失败!");
return NULL;
}
while (fscanf(r, "%d", &t) != EOF) {
Lnode *q = (Lnode*)malloc(sizeof(Lnode));
q->data = t;
p->next = q;
p = q;
}
p->next = NULL;
fclose(r);
return head;
}
LinkList scanflist() {
LinkList L;
L = (LinkList)malloc(sizeof(Lnode));
L->next = NULL;
LinkList p;
int n, i;
printf("请输入会员的数量:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
p = (LinkList)malloc(sizeof(Lnode)); //创建一个新结点*P
printf("请输入会员信息:\n");
printf("身份证号:");
scanf("%s", p->data.sfz);
printf("姓名:");
scanf("%s", p->data.xm); //字符串输入
printf("电话:");
scanf("%s", p->data.dh);
printf("会员等级:");
scanf("%s", p->data.hydj);
printf("优惠政策:");
scanf("%s", p->data.yhzc);
p->next = L->next; //使p插入头结点
L->next = p;
}
return L; //返回链表的头指针 L。
}
```
注意,以上代码只是解决了语法错误,具体是否符合你的需求还需要你自己仔细检查。
阅读全文