自定义的宏修改代码后未使用,不使用宏没错,但删除后会报错,为什么呢,求指点!!
把代码贴出来看看吧。你这个是c代码,变量定义要在函数代码块的前面。有返回值的函数必须有明确能执行到的return语句
语法错误,常量前面丢失了冒号。
#include <windows.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <malloc.h>
#include <conio.h>
#define N 5
/*#define HEAD1 "----------欢迎使用停车场管理系统----------\n"
#define HEAD2 "|--------请输入下列选项代码并回车--------|\n"
#define MENU1 "\n|1.新车入库登记 |\n\n"
#define MENU2 "|2.出库并计费 |\n\n"
#define MENU3 "|3.查询车辆在库状态 |\n\n"
#define MENU4 "|4.查询停车位余量 |\n\n"
#define MENU5 "|5.查看日志 |\n\n"
#define MENU6 "|6.退出停车场管理系统 |\n\n"
#define HEAD3 "------------------------------------------\n" */
//函数的声明
void menu();
int FileStatus(FILE *fp);
typedef struct car
{
int timeHour; //停时HH(小时)
int id; //车牌号码
int inTime[2]; //车辆进入时间
int totalTime; //总停车时间,以小时计
int sum; //总金额
int position; //位置剩余量
}car;
main(void)
{
int position = 100; //总车位
int operate;
char File[] = {"parking.txt"};
do
{
menu();
while(1) //输入为1-6,执行对应的操作
{
printf("请输入选择项后回车:");
scanf("%d",&operate);
if(operate > 0 && operate < 7)
break;
else
printf("输入错误,请重新输入!\n");
}
//输入正确执行对应操作
switch(operate)
{
case 1:
position--;
ruku(File);
break;
case 2:
position++;
chuku(File);
break;
case 3:
SearchNumber(File);
break;
case 4:
positionElse(position);
break;
case 5:
logout(File);
break;
case 6:
system("cls");
exit(0);
default:
printf("选择错误,请重新选择!\n");
}
printf("\n");
printf("按任意键返回主菜单!");
getch();
system("cls"); //清屏
}
while(operate != 0);
return 1;
}
//函数库
int ruku(char *File) //新车入库登记
{
int m; //位数侦测
car temp,temp0;
FILE *fp = fopen(File,"at+"); //文件打开
time_t t;
struct tm * lt;
time(&t); //获取时间
lt = localtime (&t); //转为时间结构
if(fp == NULL)
{
printf("无法打开文件,请检查存储权限!\n",File);
return;
}
Repeat:printf("请输入车牌号(5位数字):");
m = scanf("%05d",&temp.id);
if(m <= 0 || m > 99999)
{
printf("您输入的车牌号码有误,请检查格式!\n");
fflush(stdin); //清空chche
goto Repeat;
}
fseek(fp,0,SEEK_SET); //移动指针到文件开头
while(fread(&temp0,sizeof(car),1,fp))
{
if(temp0.id == temp.id)
{
printf("该车辆已存在,请勿重复录入!\n");
goto Repeat;
}
}
temp.inTime[0] = lt->tm_hour;
temp.inTime[1] = lt->tm_min;
temp.inTime[2] = lt->tm_sec;
if(!fwrite(&temp,sizeof(car),1,fp)) //进行写入数据操作
{
printf("入库失败!\n向文件%s写入信息失败!\n",File);
return;
}
printf( "车牌号为%d的车辆于%04d-%02d-%02d %02d:%02d:%02d入库成功!\n向文件%s写入信息成功!\n",temp.id,lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec,File);
fclose(fp);
return 0;
}
int chuku(char *File) //出库并计费
{
int a = 0,len,del;
car s[N];
FILE *fp = fopen(File,"r");
time_t t;
struct tm * lt;
time (&t); //获取时间
lt = localtime (&t); //转为时间结构
if(fp==NULL)
{
printf("未创建文件,请先录入车辆信息!");
return;
}
if(FileStatus(fp))
{
printf("文件为空,请先录入信息!");
return;
}
printf("请输入出库车辆车牌号码(5位):");
scanf("%d",&del);
fseek(fp,0,SEEK_SET);
while(fread(s+a,sizeof(car),1,fp))
{
if(s[a].id==del)
{
s[a].totalTime = lt->tm_sec-s[a].inTime[2];
//总金额计算公式,入场费5元,一小时6元,不足1小时按1小时计算
s[a].sum = 5 + abs(lt->tm_hour - s[a].inTime[0]) * 6 + 6;
printf("------------------------------------------\n");
printf("| 车牌号: %d |\n",s[a].id);
printf("| 入库时间: %04d-%02d-%02d %02d:%02d:%02d |\n",lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday,abs(s[a].inTime[0]),abs(s[a].inTime[1]),abs(s[a].inTime[2]));
printf("| 出库时间: %04d-%02d-%02d %02d:%02d:%02d |\n",lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec);
printf("| 已停时长: %d小时 |\n",abs(lt->tm_hour-s[a].inTime[0]) + abs(lt->tm_min-s[a].inTime[1]) / 60);
printf("| 应缴金额: %d元 |\n",s[a].sum);
printf("| 缴费成功! |\n");
printf("------------------------------------------");
a -= 1;
}
a++;
}
fclose(fp);
len = a;
fp = fopen(File,"wt");
fseek(fp,0,SEEK_SET);
for(a = 0;a < len;a++) //删除后重写文件
fwrite(s+a,sizeof(car),1,fp);
fclose(fp);
return 0;
}
int SearchNumber(char *File) //按车牌号查找
{
int Number;
car temp; //定义结构体变量 temp
FILE *fp = fopen(File,"rt");
if(fp == NULL)
{
printf("无法打开文件!");
return;
}
if( FileStatus(fp) )
{
printf("停车场为空!");
return;
}
printf("请输入车号:");
scanf("%d",&Number);
fseek(fp,0,0); //从文件开始进行查找
while(fread(&temp,sizeof(car),1,fp)) //从fp所指向的文件读取一个数据块(sizeof(car)) ,并放到*temp所指向的内存地址中
{
if( temp.id == Number )
{
printf("车号为%d的车辆在此停车场中!\n",Number);
return; //结束程序
}
}
printf("未找到车号为%d的车辆信息!",Number);
fclose(fp);
return;
}
int positionElse(position)
{
printf("剩余车位:%d 个",position);
return 0;
}
int logout(char *File) //输出文件
{
int a,b,c;
car S;
FILE *fp = fopen(File,"r");//进行读入
time_t t;
struct tm * lt;
time (&t); //获取时间
lt = localtime (&t); //转为时间结构
a = S.inTime[0];
b = S.inTime[1];
c = S.inTime[2];
S.totalTime = ((lt->tm_sec)-c);
S.sum = 5 + S.totalTime;
if(fp == NULL)
{
printf("无法打开文件!\n",File);
return;
}
fseek(fp,0,SEEK_SET);
system("cls");
printf("------------------------------------------------------\n");
printf(" 停车信息 \n");
printf("------------------------------------------------------\n");
printf(" 车牌号 入库时间 已停时间 停车费\n");
while(fread(&S,sizeof(car),1,fp)) //从文件读入一个结构体大小的空间给S
printf(" %d %04d-%02d-%02d %02d:%02d:%02d %02d:%02d:%02d %d 元\n",S.id,lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday,S.inTime[0],S.inTime[1],S.inTime[2],abs(lt->tm_hour - S.inTime[0]),abs(lt->tm_min - S.inTime[1]),abs(lt->tm_sec - S.inTime[2]),5 + abs(lt->tm_hour-S.inTime[0]) * 6 + 6);
printf("------------------------------------------------------\n");
fclose(fp);
}
void menu() //输出主程序选择菜单
{
printf("----------欢迎使用停车场管理系统----------\n");
printf("|--------请输入下列选项代码并回车--------|\n");
printf("| |\n");
printf("| 1.车辆入库登记 |\n");
printf("| |\n");
printf("| 2.出库并计费 |\n");
printf("| |\n");
printf("| 3.车辆在库状态 |\n");
printf("| |\n");
printf("| 4.停车位剩余量 |\n");
printf("| |\n");
printf("| 5.系统停车信息 |\n");
printf("| |\n");
printf("| 6.退出系统 |\n");
printf("------------------------------------------\n");
}
int FileStatus(FILE *fp) //判断文件是否为空文件
{
int len;
int a;
fseek(fp,0,SEEK_END); //将指针定位到文件尾部
len = ftell(fp);
if (len==0)
a = 1;
else
a = 0;
return a;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!