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)后面链表显示不出来