c语言linker error问题
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"conio.h"
struct customer /*顾客*/
{
char name[8];
char origin[10];
char terminal[10];
int time;
int train_num;
int seat_num;
}CUS[500]={{"jinan","dalian",1,8,1},{"hainan","shanghai",8,15,1}};
struct train /*火车*/
{
char origin[10];
char terminal[10];
int num;
int time;
int seat_num;
int train_num;
}TRAIN[20]={{"jinan","dalian",1,8,1},{"hainan","dalian",2,9,1},{"fujian","changsha",3,10,1},{"hainan","jinan",4,11,1},{"dalian","fujian",5,12,1},{"hainan","changsha",6,13,1},{"chongqing","shanghai",7,14,1},{"hainan","shanghai",8,15,1},{"chongqing","jinan",9,16,1},{"changsha","shanghai",10,17,1},{"changsha","fujian",11,18,1},{"changsha","dalia",12,19,1},{"chongqing","fujian",13,20,1},{"shanghai","fujian",14,21,1},{"jinan","fujian",15,22,1},{"fujian","hainan",16,23,1},{"chongqing","hainan",17,24,1},{"dalian","fujian",18,1,1},{"chongqing","dalian",19,2,1},{"changsha","jinan",20,3,1}};
void save_train() /*火车数据存储*/
{
FILE *fp;
int i;
if((fp=fopen("train.dat","wb+"))==NULL)
{
printf("the file can not open\n");
return;
}
for(i=0;i<3;i++)
{
if(fwrite(&TRAIN,sizeof(struct train),1,fp)!=1)
printf("error\n");
}
fclose(fp);
}
void save_cus() /*顾客数据存储*/
{
FILE *fp;
int i;
if((fp=fopen("customer.dat","wb+"))==NULL)
{
printf("the file can not open\n");
return;
}
for(i=0;i<3;i++)
{
if(fwrite(&CUS,sizeof(struct customer),1,fp)!=1)
printf("error\n");
}
fclose(fp);
}
void reserve(char origin[],char terminal[],char name[]) /*预定*/
{
FILE *fp1,*fp2;
int i,j,n;
if((fp1=fopen("train.dat","r+"))==NULL)
{
printf("the file can not open.\n");
return;
}
if((fp2=fopen("customer.dat","r+"))==NULL)
{
printf("the file can not open.\n");
return;
}
for(i=0;fread(&TRAIN[i],sizeof(struct train),1,fp1)!=0;i++)
{}
for(j=0;fread(&CUS[j],sizeof(struct customer),1,fp2)!=0;j++)
{}
n=j;
for(i=0;i<3;i++)
{
if(strcmp(origin,TRAIN[i].origin)==0&&strcmp(terminal,TRAIN[i].terminal)==0)
{
if(TRAIN[i].seat_num<=500)
{
TRAIN[i].seat_num=TRAIN[i].seat_num+1;
strcpy(CUS[n].name,name);
strcpy(CUS[n].origin,TRAIN[i].origin);
strcpy(CUS[n].terminal,TRAIN[i].terminal);
printf("\tname train_num seat_num\t\n");
printf("\t%-10s%-10s %6d\t\n",CUS[n].name,CUS[n].train_num,CUS[n].seat_num);
fclose(fp1);
fclose(fp2);
save_train();
}
if((fp2=fopen("customer.dat","w"))==NULL)
{
printf("the file can not open\n");
return;
}
for(j=0;j<n;j++)
{
if(fwrite(&CUS[j],sizeof(struct customer),1,fp2)!=1)
printf("error\n");
}
fclose(fp2);
}}}
void change(char origin[],char terminal[],char name[]) /*改签*/
{
FILE *fp1,*fp2;
int i,j,n=0,k=0;
if((fp1=fopen("train.dat","r+"))==NULL)
{
printf("the file can not open.\n");
return;
}
if((fp2=fopen("customer.dat","r+"))==NULL)
{
printf("the file can not open\n");
return;
}
for(i=0;fread(&TRAIN[i],sizeof(struct train),1,fp1)!=0;i++)
{}
for(j=0;fread(&CUS[j],sizeof(struct customer),1,fp2)!=0;j++)
{}
n=j;
for(i=0;i<3;i++)
{
if(strcmp(origin,TRAIN[i].origin)==0 && strcmp(terminal,TRAIN[i].terminal)==0)
{
for(j=0;j<n;j++)
if(strcmp(name,CUS[j].name)==0)
{ k=j;
TRAIN[i].seat_num=TRAIN[i].seat_num-1;
for(j=k;j<n;j++)
{ strcpy(CUS[j].name,CUS[j+1].name);
strcpy(CUS[j].origin,CUS[j+1].origin);
strcpy(CUS[j].terminal,CUS[j+1].terminal);
}
printf("return ticket successed!");
fclose(fp1);
fclose(fp2);
save_train();
if((fp2=fopen("customer.dat","w"))==NULL)
{
printf("the file can not open\n");
return;
}
for(j=0;j<n;j++)
{
if(fwrite(&CUS[j],sizeof(struct customer),1,fp2)!=1)
printf("error\n");
}
fclose(fp2);
}
else printf("No the customer");
}
else printf("No the train");
}
n=j;
for(i=0;i<3;i++)
{
if(strcmp(origin,TRAIN[i].origin)==0 && strcmp(terminal,TRAIN[i].terminal)==0)
{
If(TRAIN[i].seat_num<=500);
{
TRAIN[i].seat_num=TRAIN[i].seat_num+1;
strcpy(CUS[n].name,name);
strcpy(CUS[n].origin,TRAIN[i].origin);
strcpy(CUS[n].terminal,TRAIN[i].terminal);
printf("\tname train_num seat_num\t\n");
printf("\t%-10s%-10s %6d\t\n",CUS[n].name,CUS[n].train_num,CUS[n].seat_num);
fclose(fp1);
fclose(fp2);
}}}}
void endorse(char origin[],char terminal[],char name[]) /*退票*/
{
FILE *fp1,*fp2;
int i,j,n=0,k=0;
if((fp1=fopen("train.dat","r+"))==NULL)
{
printf("the file can not open.\n");
return;
}
if((fp2=fopen("customer.dat","r+"))==NULL)
{
printf("the file can not open\n");
return;
}
for(i=0;fread(&TRAIN[i],sizeof(struct train),1,fp1)!=0;i++)
{}
for(j=0;fread(&CUS[j],sizeof(struct customer),1,fp2)!=0;j++)
{}
n=j;
for(i=0;i<3;i++)
{
if(strcmp(origin,TRAIN[i].origin)==0&&strcmp(terminal,TRAIN[i].terminal)==0)
{
for(j=0;j<n;j++)
if(strcmp(name,CUS[j].name)==0)
{ k=j;
TRAIN[i].seat_num=TRAIN[i].seat_num-1;
for(j=k;j<n;j++)
{ strcpy(CUS[j].name,CUS[j+1].name);
strcpy(CUS[j].origin,CUS[j+1].origin);
strcpy(CUS[j].terminal,CUS[j+1].terminal);
}
printf("return ticket successed!");
fclose(fp1);
fclose(fp2);
save_train();
if((fp2=fopen("customer.dat","w"))==NULL)
{
printf("the file can not open\n");
return;
}
for(j=0;j<n;j++)
{
if(fwrite(&CUS[j],sizeof(struct customer),1,fp2)!=1)
printf("error\n");
}
fclose(fp2);
}
else printf("No the customer");
}
else printf("No the train");
}
}
void seek(char origin[],char terminal[]) /*查找*/
{
FILE *fp1,*fp2;
int i,j,n;
if((fp1=fopen("train.dat","r+"))==NULL)
{
printf("the file can not open.\n");
return;
}
if((fp2=fopen("customer.dat","r+"))==NULL)
{
printf("the file can not open.\n");
return;
}
for(i=0;fread(&TRAIN[i],sizeof(struct train),1,fp1)!=0;i++)
{}
for(j=0;fread(&CUS[j],sizeof(struct customer),1,fp2)!=0;j++)
{}
n=j;
for(i=0;i<3;i++)
{
if(strcmp(origin,TRAIN[i].origin)==0&&strcmp(terminal,TRAIN[i].terminal)==0)
{
if(TRAIN[i].seat_num<500)
{
strcpy(TRAIN[n].origin,origin);
strcpy(TRAIN[n].terminal,terminal);
printf("\tname train_num seat_num\t\n");
printf("\t%-10s%-10s %6d\t\n",TRAIN[n].num,TRAIN[n].train_num,TRAIN[n].seat_num);
fclose(fp1);
fclose(fp2);
}}}}
void main() /*主函数*/
{
int *p;
char origin[8],terminal[8],name[8];
FILE *fp;
/*///////////////////////////////关于文件//////////////////////////////////*/
if ((fp = fopen("user.txt","r"))==NULL) /*如果此文件不存在*/
{
if ((fp = fopen("user.txt","w"))==NULL)
{
printf("can't bulid!%s","user.txt");
exit(1);
}
}
fclose(fp);
save_train();
save_cus();
start();
loop: getchar();
printf("please input your chioce:");
scanf("%d",&p);
switch(*p)
{
case1:
printf("Please input your origin:");
scanf("%s",&origin);
printf("Please input your terminal:");
scanf("%s",&terminal);
printf("Please input your name:");
scanf("%s",&name);
reserve(origin,terminal,name); break;
case2:
printf("please input the origin:");
scanf("%s",&origin);
printf("Please input the terminal:");
scanf("%s",&terminal);
printf("Please input your name:");
scanf("%s",&name);
change(origin,terminal,name); break;
case3:
endorse(origin,terminal,name); break;
case4:
seek(origin,terminal); break;
default:{ start(); goto loop;}
}
getch();
}
调试成功,但运行时出现linker error:undifened symbol "_If" in module NEW.C
因为字符数太多,超过10000字符,所以删去了界面部分的代码,但界面部分的代码我单独运行过,成功了。