C语言读文件问题
在工程文件夹中建立名为Athletes的txt文档,并存入五个信息。程序运行时,除了信息,还会有一行乱码,并且n=6而不是n=5.估计是读文件部分出了问题,请各位指点。
#include"stdio.h" // 头文件声明
#include"string.h"
#include"stdlib.h"
#include"malloc.h"
#define LEN sizeof(struct L)
typedef struct L /*结构体*/
{
char name[20]; // 节点信息为姓名、前驱指针、后继指针
L *prior;
L *next;
} L;
int n; // 统计结点个数
void print(L *head) //打印输出函数
{
L*p;
p=head;
do
{
printf("%s\n",p->name);
p=p->next;
}
while(p!=head);
}
L *load() //读文件
{
FILE *fp;
L *head;
L *p;
p=(L*)malloc(LEN);
head=(L*)malloc(LEN);
n=0;
if((fp=fopen("Athletes.txt","r"))==NULL)
{
printf("Error!\n");
return(head);
}
//以下有问题
fscanf(fp,"%s",head->name);
head->next=head;
head->prior=head;
n=1;
while(feof(fp)==0)
{
p->next=head->next;
head->next->prior=p;
p->prior=head;
head->next=p;
fscanf(fp,"%s",p->name);
n=n+1;
p=(L*)malloc(LEN);
}
fclose(fp);
return(head);
}
void main() //测试主函数
{
L *head;
head=(L*)malloc(LEN);
head=load();
print(head);
printf("%d\n",n);
}