c语言先从链表写入数据到文件,再把数据读取到新的链表的问题

我先建立了一个链表,输入数据把数据写到文件里,这是我进行调试,然后自己打开那个文件,数据是写进去了,没问题,但是当我把数据读取到一个新的链表,并且输出新的链表时,就有问题... 我先建立了一个链表,输入数据把数据写到文件里,这是我进行调试,然后自己打开那个文件,数据是写进去了,没问题,但是当我把数据读取到一个新的链表,并且输出新的链表时,就有问题了,输出全是屯,请问是怎么回事?
#include "stdafx.h"
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
struct student
{
char eng[10];
char chin[15];
struct student *next;
};
int main()
{
struct student *creat(void);
FILE *pt;
FILE *qt;
if((pt=fopen("D:\\g.txt","w"))==NULL)
{
printf("error\n");
exit(0);
}
if((qt=fopen("D:\\g.txt","r"))==NULL)
{
printf("error\n");
exit(0);
}
struct student *p=creat();
struct student *q=p,*z=p,*k=NULL,*t=p;

while(q!=NULL)
{
fputs(q->eng,pt);

fputs(q->chin,pt);

q=q->next;
}
while(t!=NULL)
{
k=(struct student *)malloc(25);
fgets(k->eng,10,qt);
fgets(k->chin,15,qt);
printf("%s%s",k->eng,k->chin);

t=t->next;
}
system("PAUSE");

return 0;
}
struct student *creat(void)
{
struct student *p,*q,*head;
int i=1;
p=q=(struct student *)malloc(25);
printf("please input\n");
scanf("%s %s",p->eng,p->chin);
while(strcmp(p->eng,"hah")!=0)
{
if(i==1)
head=p;
if(i>1)
{
q->next=p;
q=p;
}
p=(struct student *)malloc(25);
printf("please input\n");
scanf("%s %s",p->eng,p->chin);
i++;
}
q->next=NULL;
return head;
}
我是在vs2010上进行编译的,我输入的数据是:第一个结点是one yi,第二个结点是two er,第三个结点是three san,第四个结点是four si,第五个结点是haha wu,写入文件是没问题的,文件里是oneyitwoerthreesanfoursi,但是再写上读取到新链表并输出新链表时就输出全是屯,求大神解答
建立链表的函数有一个地方写错了,应是while(strcmp(p->eng,"haha"))
展开
 我来答
exhisort
2015-03-06 · TA获得超过143个赞
知道答主
回答量:187
采纳率:0%
帮助的人:32.7万
展开全部
那么这个函数就不适合了。。 SW是我链表的首地址 fp是文件的指针 下面定义链表类型:num域存放的是int型数据,可根据你的情况来改变。 typedef struct node{ int num; struct node *next; }Node; p 指向...
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式