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")) 展开
#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")) 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询