为什么文件无法打开呀?

[复制链接]
查看11 | 回复6 | 2021-1-27 05:20:25 | 显示全部楼层 |阅读模式
#include
#include
#include
#include
typedefstruct{
intarrive;//到达时间
inttreat;//服务时间
}QNODE;
typedefstructnode{
QNODEdata;
structnode*next;//队列中的元素信息
}LNODE,*QueuePtr;
typedefstruct{//链队列类型
QueuePtrfront;//队头指针
QueuePtrrear;//队尾指针
}LinkQueue;
voidEnQueue(LinkQueue*link,QNODEx)//进队列
{
LNODE*p=(LNODE*)malloc(sizeof(LNODE));
if(p==NULL)exit(0);
p->data=x;
p->next=NULL;
if(link->front==NULL)
{
link->front=p;
link->rear=link->front;
}
else
{
(link->rear)->next=p;
link->rear=p;
}
free(p);
}
voidDeQueue(LinkQueue*link,QNODE*x)//出队列
{
LNODE*p=link->front;
if(link->front==NULL)
exit(0);
link->front=p->next;
*x=p->data;
if(link->front==NULL)
link->rear=NULL;
free(p);
}


intmain()
{
charFname[100];
FILE*fp;
inthave=0,dwaite=0,cwaite=0,count=0,clock=0,finish=0;
QNODEcurr,temp;
LinkQueuelink;
link.front=NULL;
link.rear=NULL;
printf("输入文件名字:");
scanf("%s",Fname);/*输入装客户模拟数据的文件的文件名*/
if((fp=fopen("Fname","r"))==NULL){/*打开数据文件*/
printf("文件打开出错");
exit(0);
}
have=fscanf(fp,"%d%d",&temp.arrive,&temp.treat);
do{//约定每轮循环,处理完一位客户
if(link.front==NULL&&have==2)
{//等待队列为空时
dwaite+=temp.arrive-clock;
clock=temp.arrive;
EnQueue(&link,temp);
have=fscanf(fp,"%d%d",&temp.arrive,&temp.treat);
}
DeQueue(&link,&curr);
count++;
cwaite+=clock-curr.arrive;
finish=clock+curr.treat;
while(have==2&&finish>temp.arrive)
{
EnQueue(&link,temp);
have=fscanf(fp,"%d%d",&temp.arrive,&temp.treat);
}
clock+=temp.treat;
}while(have==2||link.front!=NULL);
printf("务人员的总空闲时间:%d和客户的平均等待时间:%d",dwaite,cwaite/count);
fclose(fp);
return0;
}
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:20:25 | 显示全部楼层
if((fp=fopen("Fname","r"))==NULL){/*打开数据文件*/
这句有问题,改成:
if((fp=fopen(Fname,"r"))==NULL){/*打开数据文件*/
你写的代码,是要打开文件名为Fname的文件,不是你输入的文件名,因为变量Fname存放的就是文件路径的字符串;

回复

使用道具 举报

千问 | 2021-1-27 05:20:25 | 显示全部楼层
但是还是不行,实际上我直接复制了文件路径,然后出现了DebugAssertionFailed,大佬麻烦你再看看,谢谢
回复

使用道具 举报

千问 | 2021-1-27 05:20:25 | 显示全部楼层
引用1楼自信男孩的回复:if((fp=fopen("Fname","r"))==NULL){/*打开数据文件*/
这句有问题,改成:
if((fp=fopen(Fname,"r"))==NULL){/*打开数据文件*/
你写的代码,是要打开文件名为Fname的文件,不是你输入的文件名,因为变量Fname存放的就是文件路径的字符串;
但是还是不行,实际上我直接复制了文件路径,然后出现了DebugAssertionFailed,大佬麻烦你再看看,谢谢
回复

使用道具 举报

千问 | 2021-1-27 05:20:25 | 显示全部楼层
引用3楼qq_46029678的回复:Quote: 引用1楼自信男孩的回复:if((fp=fopen("Fname","r"))==NULL){/*打开数据文件*/
这句有问题,改成:
if((fp=fopen(Fname,"r"))==NULL){/*打开数据文件*/
你写的代码,是要打开文件名为Fname的文件,不是你输入的文件名,因为变量Fname存放的就是文件路径的字符串;
但是还是不行,实际上我直接复制了文件路径,然后出现了DebugAssertionFailed,大佬麻烦你再看看,谢谢

那你打印一下Fname是多少?是不是你输入的路径呢?在打开之前打印一下
回复

使用道具 举报

千问 | 2021-1-27 05:20:25 | 显示全部楼层
引用4楼自信男孩的回复:Quote: 引用3楼qq_46029678的回复:Quote: 引用1楼自信男孩的回复:if((fp=fopen("Fname","r"))==NULL){/*打开数据文件*/
这句有问题,改成:
if((fp=fopen(Fname,"r"))==NULL){/*打开数据文件*/
你写的代码,是要打开文件名为Fname的文件,不是你输入的文件名,因为变量Fname存放的就是文件路径的字符串;
但是还是不行,实际上我直接复制了文件路径,然后出现了DebugAssertionFailed,大佬麻烦你再看看,谢谢

那你打印一下Fname是多少?是不是你输入的路径呢?在打开之前打印一下

我晓得,真正的问题是,我插入函数EnQueue里面的free(p)出了问题,好像是多次释放指针造成的,但是我不晓得为啥子多次释放了,我感觉就每次使用,然后用完了就释放了呀
回复

使用道具 举报

千问 | 2021-1-27 05:20:25 | 显示全部楼层
引用5楼qq_46029678的回复:Quote: 引用4楼自信男孩的回复:Quote: 引用3楼qq_46029678的回复:Quote: 引用1楼自信男孩的回复:if((fp=fopen("Fname","r"))==NULL){/*打开数据文件*/
这句有问题,改成:
if((fp=fopen(Fname,"r"))==NULL){/*打开数据文件*/
你写的代码,是要打开文件名为Fname的文件,不是你输入的文件名,因为变量Fname存放的就是文件路径的字符串;
但是还是不行,实际上我直接复制了文件路径,然后出现了DebugAssertionFailed,大佬麻烦你再看看,谢谢

那你打印一下Fname是多少?是不是你输入的路径呢?在打开之前打印一下

我晓得,真正的问题是,我插入函数EnQueue里面的free(p)出了问题,好像是多次释放指针造成的,但是我不晓得为啥子多次释放了,我感觉就每次使用,然后用完了就释放了呀

你的问题是打开文件,没仔细看你的其他问题~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行