该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
printf("请输入数学:\n");
scanf("%d",&p1->info.ke2);
printf("请输入英语:\n");
scanf("%d",&p1->info.ke3);
}
p2->next=NULL;
if((fp=fopen("C:\\Users\\ybh\\Desktop\\stu.txt","w"))==NULL) {
printf("error!!!!!\n");
exit(0);
}
p=head;
if (head!=NULL)
do
{
if(fprintf(fp,"%ld%s%c%d%d%d",p->info.xuehao,p->info.xingming,p->info.xingbie,p->info.ke1,p->info.ke2,p->info.ke3)!=1) printf("error!\n");
p=p->next;
}while(p!=NULL);
fclose(fp);
return 0;
}
以下是从文件中读取刚才放入的 数据 放到链表中
#include "stdafx.h" #include "stdio.h" #include "stdlib.h"
#define LEN sizeof(struct Student)
struct StudentDate
{
long xuehao;
char xingming[20];
char xingbie;
int ke1;
int ke2;
int ke3;
};
struct Student
{
struct StudentDate info;
struct Student *next;
};
int main(int argc, char* argv[])
{
int n=0;
char j;
struct Student *head,*p1,*p2,*p;
FILE*fp;
if((fp=fopen("C:\\Users\\ybh\\Desktop\\stu.txt","r"))==NULL)
{
printf("error!\n");
exit(0);
}
head=NULL;
p1=p2=(struct Student*) malloc (LEN); fscanf(fp,"%ld%s%c%d%d%d",&p1->info.xuehao,&p1->info.xingming,&p1->info.xingbie,&p1->info.ke1,&p1->info.ke2,&p1->info.ke3);
while (p1->info.ke1!=0)
{ //这里应该形成死循环了 不知道为什么
n++;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Student*)malloc(LEN);
fscanf(fp,"%ld%s%c%d%d%d",&p1->info.xuehao,&p1->info.xingming,&p1->info.xingbie,&p1->info.ke1,&p1->info.ke2,&p1->info.ke3);
}
p2->next=NULL;
fclose(fp);
p=head;
printf("读入完成,是否输出到屏幕?(y/n)\n");
scanf("\n");
scanf("%c",&j);
if (j=='y'||j=='Y')
{
do
{
printf("学号:%ld 姓名:%s 性别:%c 语文:%d 数学:%d 英语:%d\n",p->info.xuehao,p->info.xingming,p->info.xingbie,p->info.ke1,p->info.ke2,p->info.ke3);
p=p->next;
}while(p!=NULL);
}
return 0;
}
以上应该是2个相反的过程 写入数据和读出数据 但是可以建立文件 而从文件中无法读取数据 程序可以 运行 但是在标记的那里形成了死循环 请问为什么 如何 解决
找了2天了 找不出问题 第一次 发帖 求帮忙啊