fopen函数和fscanf函数 链表显示不出来
程序代码:#include "stdio.h"
#define FILEPATH_TRAIN "train.txt"
typedef struct train /*火车*/
{
char num[15];
char station[15];
char city[15];
char DepartureTime[15];
char arrivalTime[15];
float price;
int remainTicket;
}train;
typedef struct trainNode
{
struct train data; /*火车链表的节点数据*/
struct trainNode* next; /*指向下一节点的指针*/
}trainNode,*trainlink; /*火车节点名 火车节点指针名*/
trainlink readTrain(char *filepath); //读取外部火车文件内容, 返回火车链表的头指针
manlink readMan(char *filepath); //读取外部购票人数据内容, 返回火车链表的头指针
void printfTrain(trainlink p);
void main()
{
int meun_select(); /*菜单函数*/
trainlink pTrain; //调用 删除 插入 函数时 则通过二级指针来改变链表 头结点指针 的变量值
pTrain=readTrain(FILEPATH_TRAIN); //读取火车文件信息
}
trainlink readTrain(char *filepath)
{
trainlink pHead,pMov,pNew; //头结点的指针 可移动的当前指针 新增结点的指针
train temp;
FILE *fp;
if((fp=fopen("filepath","r"))==NULL)
{
printf("不能打开文件!\n");
exit(1);
}
pMov=pHead=NULL;
if(fp)
{
while(!feof(fp))
{
if(fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%f\n%d\n\n",temp.num,temp.station,temp.city,temp.DepartureTime,
temp.arrivalTime,&temp.price,&temp.remainTicket)==7)
{
pNew=(trainlink)malloc(sizeof(trainNode)); //申请新结点
pNew->next=NULL;
pNew->data=temp;
if(NULL==pHead)
pHead=pMov=pNew; //加入头结点
else
{
pMov->next=pNew;
pMov=pMov->next;
}
}
}
fclose(fp);
}
return pHead; //返回 火车链表的头指针 如果没进入while循环体 则pHead=NULL
}
void printfTrain(trainlink p) //打印指定的车次信息
{
printf("\n**************************厦门火车站列车信息*****************************\n");
printf("\n|------------------------------------------------------------------------\n");
printf("\n| 车次 | 发车时间 | 始发站 | 终点站 | 到达时间 | 票价 | 剩余票数 |\n");
while(p!=NULL)
{
printf("\n| %-8s | %-5s | %-7s | %-7s | %-10s | ¥%6.1f | %5d |\n",p->data.num,p->data.DepartureTime,
p->data.station,p->data.city,p->data.arrivalTime,p->data.price,p->data.remainTicket);
p=p->next;
}
printf("\n|------------------------------------------------------------------------\n");
getch();
}为什么显示“不能打开文件!”train.txt明明有存在啊
然后我把 if((fp=fopen("filepath","r"))==NULL) 改成 if((fp=fopen("train.txt","r"))==NULL)后面链表显示不出来




