c语言运行时文件打开失败,各位帮我看一下为什么输出的结果总是“文件打开失败”...

这是一个C语言实现的交通违章记录管理系统,程序中遇到文件打开失败的问题。当尝试打开'records.txt'文件进行读取时,总是输出'文件打开失败!'。程序包含了输入、显示、删除、排序、插入等功能,但主要问题在于文件操作部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已结贴√

问题点数:20 回复次数:7

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

各位帮我看一下为什么输出的结果总是“文件打开失败”

#include

#include

#include

#include

#define NUM 10

typedef struct

{

char driver[10];

int car;

char police[10];

int num;

int year;

int month;

int date;

} Traffic;

int menu_select();

int Input(Traffic trafList[],int n);

void Display(Traffic trafList[],int n);

int Delete_a_record(Traffic trafList[],int n);

void Sort_by_Name(Traffic trafList[],int n);

int Insert_a_record(Traffic trafList[],int n);

int AddfromText(Traffic trafList[],int n,char *filename);

void WritetoText(Traffic trafList[],int n,char *filename);

void Query_a_record(Traffic trafList[],int n);

void main()

{

Traffic trafList[NUM];

int n=0;

FILE*fp;

int i;

fp=fopen("records.txt","r");

if(fp==NULL)

{    printf("文件打开失败!\n");

exit(1);

}

fprintf(fp,"%d",n);

printf("%d",n);

for(i=0;i<1;i++)

{

fprintf(fp,"%s\t\t",trafList[i].driver);

fprintf(fp,"%d\t",trafList[i].car);

fprintf(fp,"%s",trafList[i].police);

fprintf(fp,"%d\t",trafList[i].num);

fprintf(fp,"%d\n",trafList[i].year);

fprintf(fp,"%d\t",trafList[i].month);

fprintf(fp,"%d\t",trafList[i].date);

}

for(;;)

{

switch(menu_select())

{

case 1:

n=Input(trafList,n);

system("pause");

break;

case 2:

Display(trafList,n);

system("pause");

break;

case 3:

n=Delete_a_record(trafList,n);

system("pause");

break;

case 4:

Sort_by_Name(trafList,n);

system("pause");

break;

case 5:

n=Insert_a_record(trafList,n);

system("pause");

break;

case 6:

Query_a_record(trafList,n);

system("pause");

break;

case 7:

n=AddfromText(trafList,n,"data.txt");

system("pause");

break;

case 8:

WritetoText(trafList,n,"records.txt");

system("pause");

break;

case 0:

printf("退出\n");

system("pause");

exit(0);

}

}

}

int menu_select()

{

char c;

do {

system("cls");

printf("1.Input records\n");

printf("2.Display all records\n");

printf("3.Delete a record\n");

printf("4.Sort\n");

printf("5.Insert a record\n");

printf("6.Query\n");

printf("7.Add records form a Text File\n");

printf("8.Write to a next Text File\n");

printf("0.Quit\n");

printf("Give your choice(0-8)");

c=getchar();

}while(c'8');

return c-'0';

}

int Input(Traffic trafList[],int n)

{

char ch;

printf("继续吗?Y or N?\n");

getchar();

ch=getchar();

while(ch=='Y')

{

printf("请输入司机姓名");

scanf("%s",trafList[n].driver);

printf("请输入车牌号");

scanf("%d",&trafList[n].car);

printf("请输入开罚单交警姓名");

scanf("%s",trafList[n].police);

printf("请输入罚单编号");

scanf("%d",&trafList[n].num);

printf("请输入开罚单的年");

scanf("%d",&trafList[n].year);

printf("请输入开罚单的月");

scanf("%d",&trafList[n].month);

printf("请输入开罚单的日期");

scanf("%d",&trafList[n].date);

printf("继续吗?Y or N\n");

getchar();

ch=getchar();

n++;

}

return n;

}

void Display(Traffic trafList[],int n)

{

int i;

for(i=0;i

{

printf("司机姓名:%s\t车牌号:%d\t交警姓名:%s\t罚单编号:%d\t开罚单的年:%d\t开罚单的月:%d\t开罚单的日期:%d\n",trafList[i].driver,trafList[i].car,trafList[i].police,trafList[i].num,trafList[i].year,trafList[i].month,trafList[i].date);

// if(i%10==0) system("pause");

}

}

int Delete(Traffic trafList[],int n,char *name)

{

int i,j;

for(i=0;i

{

if(strcmp(trafList[i].driver,name)==0)

{ for(j=i;j

trafList[j]=trafList[j+1];

}

}

n--;

return n;

}

int Delete_a_record(Traffic trafList[],int n)

{

char s[10];

char zq;

printf("请输入待删者姓名:\n");

scanf("%s",&s);

printf("您真要删除姓名为%s的记录吗?Y or N\n",s);

scanf("%s",&zq);

//    zq=getchar();

if(zq=='Y')

{

n=Delete(trafList,n,s);

printf("您已经成功删除记!\n");

}

return n;

}

void Sort_by_Name(Traffic trafList[],int n)

{

int i,j,p;

Traffic zq;

//printf("N=%d\n",n);

for(i=0;i

{

p=i;

for(j=i+1;j

if(strcmp(trafList[j].driver,trafList[p].driver)<0) p=j;

if(p=!i)

{

zq=trafList[p];trafList[p]=trafList[i];trafList[i]=zq;

}

}

}

int Insert(Traffic trafList[],int n,Traffic *s)

{

int i,j;

for(i=0;i

{

//printf("%d",n);

if(strcmp(s[i].driver,trafList[i].driver)<0)

{

for(j=n;j>0;j--)

trafList[j]=trafList[j-1];

trafList[i]=*s;

break;

}

}

if(i==n) trafList[n]=*s;

n++;

return n;

}

int Insert_a_record(Traffic trafList[],int n)

{

Traffic zq;

printf("请输入带插入司机姓名:\n");

scanf("%s",zq.driver);

printf("请输入驾驶的车牌号:\n");

scanf("%d",&zq.car);

printf("请输入开罚单的交警姓名:\n");

scanf("%s",zq.police);

printf("请输入罚单编号:\n");

scanf("%d",&zq.num);

printf("请输入开罚单年份:\n");

scanf("%d",&zq.year);

printf("请输入开罚单月份:\n");

scanf("%d",&zq.month);

printf("请输入开罚单日期:\n");

scanf("%d",&zq.date);

n=Insert(trafList,n,&zq);

printf("该记录已经输入成功\n");

return n;

}

int Query(Traffic trafList[],int n,char *name)

{

int i;

for(i=0;i

{

if(strcmp(trafList[i].driver,name)==0)

return i;

}

if(i==n)    return -1;

}

void Query_a_record(Traffic trafList[],int n)

{

int a;

char zq[10];

printf("请输入待查找者的姓名:\n");

scanf("%s",zq);

a=Query(trafList,n,zq);

if(a=!-1)

{

printf("查找成功!该司机的罚单信息如下:\n");

printf("司机姓名:%s\n车牌号:%d\n交警姓名:%s\n罚单编号%d\n年份:%d\n月份:%d\n日期:%d\n",trafList[a].driver,trafList[a].car,trafList[a].police,trafList[a].num,trafList[a].year,trafList[a].month,trafList[a].date);

}

else printf("查找失败!\n");

}

int AddfromText(Traffic trafList[],int n,char *filename)

{

FILE *fp;Traffic zq[NUM];

int z,i;

if((fp=fopen(filename,"r"))==NULL)

{

printf("打开文件失败!\n");

exit(1);

}

fscanf(fp,"%d",&z);

//printf("z=%d\n",z);

for(i=0;i

{

fscanf(fp,"%s",zq[i].driver);

fscanf(fp,"%d",&zq[i].car);

fscanf(fp,"%s",zq[i].police);

fscanf(fp,"%d",&zq[i].num);

fscanf(fp,"%d",&zq[i].year);

fscanf(fp,"%d",&zq[i].month);

fscanf(fp,"%d",&zq[i].date);

}

for(i=0;i

//trafList[n]=zq[i];

Insert(trafList,n,zq);

return n;

}

void WritetoText(Traffic trafList[],int n,char *filename)

{

FILE *fp;

int i;

fp=fopen("records.txt","W");

if(fp==NULL)

{

printf("文件打开失败!\n");

exit(1);

}

fprintf(fp,"%d\n",n);

for(i=0;i

{

fprintf(fp,"%s",trafList[i].driver);

fprintf(fp,"%d\t",trafList[i].car);

fprintf(fp,"%s",trafList[i].police);

fprintf(fp,"%d\t",trafList[i].num);

fprintf(fp,"%d\t",trafList[i].year);

fprintf(fp,"%d\t",trafList[i].month);

fprintf(fp,"%d\n",trafList[i].date);

}

fclose(fp);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值