c语言linker error问题

char_xp 2016-09-05 02:40:14
#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字符,所以删去了界面部分的代码,但界面部分的代码我单独运行过,成功了。
...全文
497 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-09-06
  • 打赏
  • 举报
回复
楼主会“编辑”,“查找”吗?
paschen 2016-09-05
  • 打赏
  • 举报
回复
change函数中: If(TRAIN[i].seat_num<=500); 改成 if(TRAIN[i].seat_num<=500);
小灸舞 2016-09-05
  • 打赏
  • 举报
回复
177行:If应该是if
PS:你的start函数是啥,看不到声明和定义
char_xp 2016-09-05
  • 打赏
  • 举报
回复
代码要怎么改
赵4老师 2016-09-05
  • 打赏
  • 举报
回复
If(TRAIN[i].seat_num<=500); 改为 if(TRAIN[i].seat_num<=500); 关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
pengzhixi 2016-09-05
  • 打赏
  • 举报
回复
提示不是很明显了么 文件名 然后哪个符号没定义。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧