user-0 提问: 这个程序在vc6.0上编译时会出现许多问题，但在dev上面编译时只有一个错误:	[Error] ld returned 1 exit status（makefiles.win文件里），想知道这个程序应该怎样改才能正常运行，在Dev里有时可以编译成功。

回复:
user: user-1
content: 这是代码运行的部分截图：

user: user-1
content: 修改完善如下，供参考： #include<stdio.h> #include<stdlib.h> #include<string.h> #include <time.h> struct Signal {     char  Name[10];    //名字     int   KB;          //开放状态     float Pos;        //地址     int   Type;       //闭锁継电器状态     struct Signal *next,*front; };  struct Signal*head=NULL; int    i_count=0;      //全局 计数  void   write(struct Signal*head); void   read(struct Signal*&head); void   creat(struct Signal *&head); void   chaxun(struct Signal*head); void   change(struct Signal* head); void   delete_xinhaoji(struct Signal*head); void   myfree(struct Signal*head); void   Change(struct Signal *head);  void   creat(struct Signal *&head) {     char answer='t';     struct Signal*p1,*p2,*pr;     if(head==NULL)     {             head=(struct Signal*)malloc(sizeof(struct Signal));             if(!head)  return;             head->next=NULL;     }     pr=head;     p2=head->next;     while(p2){pr=p2; p2=p2->next;}     while(answer!='F'&& answer!='f')     {         p1=(struct Signal*)malloc(sizeof(struct Signal));         p1->next=NULL;         printf("请输入第%d架信号机的名称：\n",i_count+1);         fflush(stdout);rewind(stdin);         scanf("%s",p1->Name);         printf("请输入第%d架信号机的开放状态：\n",i_count+1);         fflush(stdout);rewind(stdin);         scanf("%d",&p1->KB);         printf("请输入第%d架信号机的地址：\n",i_count+1);         fflush(stdout);rewind(stdin);         scanf("%f",&p1->Pos);         printf("请输入第%d架信号机的闭锁继电器状态：\n",i_count+1);         fflush(stdout);rewind(stdin);         scanf("%d",&p1->Type);//输入后点击两次回车。         pr->next=p1;         pr=p1;         i_count++;         printf("是否继续(T/F)\n");         fflush(stdout);rewind(stdin);         scanf("%c",&answer);     } }   void Change(struct Signal *head) {     char s[20];     struct Signal* buf;     if(head==NULL) return;     printf("\t请输入想修改的信号机名称:");     scanf("%s",s);     buf=head->next;     while(strcmp(buf->Name,s)!=0 && buf->next!=NULL)     {            buf=buf->next;//找到要修改的信号机     }     if(buf==NULL || strcmp(buf->Name,s)!=0)     {         printf("\t没有这个信号机!\n");         return;     }else{         //输入修改之后的数据         printf("\t信号机名称改为:");         scanf("%s",buf->Name);         printf("\t信号机开放状态改为:");         scanf("%d",&buf->KB);         printf("\t信号机位置改为:");         scanf("%f",&buf->Pos);         printf("\t信号机性质改为:");         scanf("%d",&buf->Type);         printf("\t修改成功!\n");     } } void change(struct Signal* head) {         if(head==NULL)  return;         printf("信号机名称\t信号机开放状态\t信号机位置\t信号机性质\n");         struct Signal *buf;         buf = head->next;         while(buf!=NULL)   // 输出全部信息         {              printf("%5s%15d%15g%15d\n",buf->Name,buf->KB,buf->Pos,buf->Type);//输出信息              buf=buf->next;         } }  void delete_xinhaoji(struct Signal*head) {     if(head==NULL) return;     char Signal_num[20];     printf("\t请输入要删除的信号机的名称:");     scanf("%s",Signal_num);     struct Signal*tmp,*pre;     for(tmp=head->next,pre=head;tmp!=NULL;pre=tmp,tmp=tmp->next)     {         if(strcmp(tmp->Name,Signal_num)==0)         {            pre->next=tmp->next;            free(tmp);//释放temp所占用的内存；            printf("\t\t\t删除信号机成功！\n");            i_count--;            return ;         }     }     if(tmp==NULL)     {         printf("\t无此信号机！\n");     } }  void chaxun(struct Signal*head) {     char s[10];     struct Signal*temp;     if(head==NULL) return;     printf("请输入想查询的信号机名称:\n");     scanf("%s",s);     temp=head->next;     while(strcmp(temp->Name,s)!=0 && temp->next!=NULL)     {         temp=temp->next;     }     if(temp==NULL || strcmp(temp->Name,s)!=0)     {         printf("\t没有这个信号机!\n");     }     else     {         printf("\t此信号机名称:             %s\n",temp->Name);         printf("\t此信号机的位置是          %d\n",temp->KB);         printf("\t此信号机的开放状态是      %g\n",temp->Pos);         printf("\t此信号机的闭锁继电器状态是%d\n",temp->Type);     } }    void read(struct Signal*&head)//将文件中的内容读出到链表中，返回值为表头地址 {     FILE *fp; //文件指针     char filename[32]="signal.txt";     struct Signal *p,*p1,*pr=NULL;     //printf("请输入打开的文件名(signal.txt):");     //scanf("%s",filename);     if((fp=fopen(filename,"r+"))==NULL)//以二进制的方式打开文件     {         printf("cannot open file\n");//如有错则输出cannot open file         return;//exit(0);     }     if(head==NULL)     {             head=(struct Signal*)malloc(sizeof(struct Signal));             if(!head)  return;             head->next=NULL;     }     pr=head;     p1=head->next;     while(p1){pr=p1; p1=p1->next;}     while(1)     {            p=(struct Signal*)malloc(sizeof(struct Signal));            p->next=NULL;            if(fscanf(fp,"%s %d %f %d",p->Name,&p->KB,&p->Pos,&p->Type)!=4) break;            pr->next=p;            pr=p;            i_count++;     }     fclose(fp);    //关闭文件 }  void write(struct Signal *head) {         struct Signal*p;         FILE *fp;         int  i=0 ;         char filename[32]="signal.txt";         p=head->next;         //printf("请输入保存的文件名(signal.txt):");         //scanf("%s",filename);         if((fp=fopen(filename,"w+"))==NULL)         {                printf("不能打开文件\n");                return;         }         while(p!=NULL)         {                fprintf(fp,"%5s\t%15d\t%15f\t%15d\n",p->Name,p->KB,p->Pos,p->Type);                p=p->next;                i++;         }         //fprintf(fp,"-------------------------------------------------------------------------\n");         //fprintf(fp,"*****共有%d个信号机*****\n",i);         fclose(fp);                  //关闭文件         printf("保存成功!\n"); }  void myfree(struct Signal*head) {     struct Signal*p=NULL;     for(;head!=NULL;)     {         p=head;         head=head->next;         free(p);     }     i_count=0;     system("pause"); }  int main() {     int option;     read(head);//系统起始，载入文件信息。     while (1)     {         system("cls");         printf("    主菜单：\n");         printf("1,  添加信号机：    \n");         printf("2,  查看信号机：    \n");         printf("3,  修改信号机信息：\n");         printf("4,  删除信号机：    \n");         printf("5,  保存信号机信息：\n");         printf("6,  浏览信号机信息：\n");         printf("7,  保存并退出系统：\n");         printf("请选择：            \n");         scanf("%d",&option);         getchar();         switch(option)         {             case 1:creat(head); break;             case 2:chaxun(head);break;             case 3:Change(head);break;//修改信号机信息             case 4:delete_xinhaoji(head);break;             case 5://write(head);                    break;             case 6:change(head);break;//浏览信号机信息             case 7:write(head);free(head);exit(0);             default:printf("enter data error!\n");         }         system("pause");     }     return 0; }

user: user-0
content: 这个还是只编译成功了但是各部分功能还是没办法运行啊

user: user-1
content: 什么功能没办法运行？我把文件读入功能，放在了系统启动时自动加载了，文件保存放在了第7项里了，退出系统前先保存到文件里。所以系统运行时，菜单里的保存信号机信息到文件第5项就给屏蔽了，第6项 读取文件内容改成了浏览信号机信息了。

user: user-2
content: 编译成功了并不代表没有错误，比如这一行：  while (option=6)  很显然就是一个错误。等你把这些错误改完了再说吧！

user: user-0
content: 我在赵四老师改的基础上又改了一下，现在错误应该差不多了，但是程序依然没发运行写入数据后只能保存一组数据，运行其他子程序时直接退出。现在应该怎么办。#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include &lt;time.h&gt; struct Signal  {     char Name[10];    //名字     int KB;            //开放状态     float Pos;        //地址     int Type;            //闭锁継电器状态     struct Signal *next,*front; }; struct Signal*head; void write(); void read(); void creat(); void chaxun(); void change(); void Change(); void delete_xinhaoji(); void myfree();     void creat() {     int n,i=0;     char answer=' ';     struct Signal*p1,*p2;     n=0;     p1=p2=(struct Signal*)malloc(sizeof(struct Signal));     p1-&gt;Pos=1.0;     printf("请输入第1架信号机的名称：\n");     scanf("%s",p1-&gt;Name);     printf("请输入第1架信号机的开放状态:\n");     scanf("%d",&p1-&gt;KB);     printf("请输入第1架信号机的地址:\n");     scanf("%f",&p1-&gt;Pos);     printf("请输入第1架信号机的闭锁继电器状态\n");     scanf("%d",&p1-&gt;Type);     head=NULL;     while(answer!='F'&&answer!='f')     {         n=n+1;         if(n==1)  		{             head=p1;         }  		else  		{             p2-&gt;next=p1;         }         p2=p1;         p1=(struct Signal*)malloc(sizeof(struct Signal));         getchar();         printf("请输入第%d架信号机的名称：\n",i+2);         scanf("%s",p1-&gt;Name);         printf("请输入第%d架信号机的开放状态：\n",i+2);         scanf("%d",&p1-&gt;KB);         printf("请输入第%d架信号机的地址：\n",i+2);         scanf("%f",&p1-&gt;Pos);         printf("请输入第%d架信号机的闭锁继电器状态：\n",i+2);         scanf("%d",&p1-&gt;Type);//输入后点击两次回车。         getchar();         i++;         getchar();         printf("是否继续(T/F)\n");         scanf("%c",&answer);         getchar();     }     p2-&gt;next=NULL; }    void change()  { 	struct Signal*buf;     printf("%5s%15d%15g%15d\n",head-&gt;Name,&head-&gt;KB,&head-&gt;Pos,&head-&gt;Type);          while(1)     {         printf("%5s%15d%15g%15d\n",head-&gt;Name,&head-&gt;KB,&head-&gt;Pos,&head-&gt;Type);           buf = head-&gt;next;         while(buf!=NULL)        // 输出全部信息         {             printf("%5s%15d%15g%15d\n",buf-&gt;Name,&buf-&gt;KB,&buf-&gt;Pos,&buf-&gt;Type);   // 输出信息             buf=buf-&gt;next;         }         Change();     } } void Change()  { 	struct Signal* buf;     char s[20];     buf=head-&gt;next;     printf("\t请输入想修改的信号机:");     scanf("%s",s);     while(strcmp(buf-&gt;Name,s)!=0&&buf!=NULL) buf=buf-&gt;next;//找到要修改的信号机     if(buf==NULL)     {         printf("\t没有这个信号机!\n");         return;     }     //输入修改之后的数据     printf("\t信号机名称:");     scanf("\t%s",buf-&gt;Name);     printf("\t信号机开放状态:");     scanf("\t%d",&buf-&gt;KB);     printf("\t信号机位置:");     scanf("\t%f",&buf-&gt;Pos);     printf("\t信号机性质:");     scanf("\t%d",&buf-&gt;Type);     printf("\t修改成功!\n"); }    void delete_xinhaoji()  { 	struct Signal*temp;     char Signal_num[20];     printf("\t请输入要删除的信号机的名称:");     scanf("%s",Signal_num);     for(temp=head-&gt;next;temp!=NULL;temp=temp-&gt;next)     {         if(strcmp(temp-&gt;Name,Signal_num)==0)         {             // 找到需要删除节点的位置             struct Signal*front=temp-&gt;front;             struct Signal*next=temp-&gt;next;             //进行删除操作；             front-&gt;next=next;             next-&gt;front=front;             free(temp);//释放temp所占用的内存；             printf("\t\t\t删除信号机成功！\n");             return ;         }     }     if(temp==NULL)     {         printf("\t无此信号机！\n");     } }       void chaxun() {     char s[10];     struct Signal*temp=head-&gt;next;     printf("请输入想查询的信号机\n");     scanf("%s",s);     while(strcmp(temp-&gt;Name,s)!=0&&temp-&gt;next!=NULL)     {         temp=temp-&gt;next;     }     if(strcmp(temp-&gt;Name,s)!=0)     {         printf("\t没有这个信号机!\n");         return;     } else {         printf("\t此信号机名称:%s\n",temp-&gt;Name);         printf("\t此信号机的位置是%d\n",temp-&gt;KB);         printf("\t此信号机的开放状态是%g\n",temp-&gt;Pos);         printf("\t此信号机的闭锁继电器状态是%d\n",temp-&gt;Type);     } }    void read() {     //将文件中的内容读出到链表中，返回值为表头地址     FILE *fp;       //文件指针     int n=0;     char filename[10];     struct Signal*p2,*p,*pr=NULL;     printf("请输入需要打开的文件");     scanf("%s",filename);     if((fp=fopen(filename,"r+"))==NULL)     //以二进制的方式打开文件     {         printf("cannot open file\n");//如有错则输出cannot open file         exit(0);     }     while(!feof(fp))        //判断文件位置标志是否移动到文件末尾     {         n++;         p=(struct Signal*)malloc(sizeof(struct Signal));         fscanf(fp,"%s%d%f%d",p-&gt;Name,&p-&gt;KB,&p-&gt;Pos,&p-&gt;Type);         if(n==1)    {             head=p;             p2=p;         } else {             //创建链表             pr=p2;             p2-&gt;next=p;             p2=p;         }     }     if(pr!=NULL)     {        pr-&gt;next=NULL;     } else {        head=NULL;     }     fclose(fp);    //关闭文件 }    void write()  {     struct Signal*p;     FILE *fp;     int  i=0 ;     char filename[10];     p=head;     printf("请输入需要打开的文件");     scanf("%s",filename);     if((fp=fopen(filename,"w+"))==NULL)     {         printf("不能打开文件\n");         return;     }     while(p!=NULL)     {         fprintf(fp,"%5s\t%15d\t%15f\t%15d\n",p-&gt;Name,p-&gt;KB,p-&gt;Pos,p-&gt;Type);         p=p-&gt;next;         i++;     }     fprintf(fp,"-------------------------------------------------------------------------\n");     fprintf(fp,"*****共有%d个信号机*****\n",i);     fclose(fp);                  //关闭文件     printf("保存成功!\n"); }       void myfree()  {     struct Signal*p=NULL;     for(;head!=NULL;)     {         p=head;         head=head-&gt;next;         free(p);     }     system("pause"); } 	int main()  	{     int option;     while (1)     {         system("cls");         printf("    主菜单：\n");         printf("1,  添加信号机：    \n");         printf("2,  查看信号机：    \n");         printf("3,  修改信号机信息：\n");         printf("4,  删除信号机：    \n");  		printf("5, 保存信号机信息：\n"); 		printf("6, 读入信号机信息，\n"); 		printf("7, 退出菜单 \n"); 		printf("请选择： \n"); 		scanf("%d",&option); 		getchar(); 		switch(option)  		{  			case 1:creat(); break;  			case 2:chaxun(); break;  			case 3:change(); break;  			case 4:delete_xinhaoji();break;  			case 5:write(); break;  			case 6:read(); break;  			case 7:myfree(); exit(0);  			default:printf("enter data error!\n");  		}  	}  	return 0;  }

user: user-2
content: 喏，出现了这么多错误！要对着错误修改！https://wandbox.org/permlink/fJaSf3mv7oG8e6aV prog.cc: In function 'void change(Signal*)': prog.cc:113:23: error: too many arguments to function 'void Change()'   113 |                 Change(head);       |                 ~~~~~~^~~~~~ prog.cc:75:6: note: declared here    75 | void Change()       |      ^~~~~~ prog.cc:102:19: warning: unused variable 'temp' [-Wunused-variable]   102 |     struct Signal*temp,*buf;       |                   ^~~~ prog.cc: In function 'void chaxun(Signal*)': prog.cc:153:9: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'char (*)[10]' [-Wformat=]   153 | scanf("%s",&s);       |        ~^  ~~       |         |  |       |         |  char (*)[10]       |         char* prog.cc: In function 'void read(Signal*)': prog.cc:183:17: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'char (*)[10]' [-Wformat=]   183 |         scanf("%s",&filename);       |                ~^  ~~~~~~~~~       |                 |  |       |                 |  char (*)[10]       |                 char* prog.cc:184:35: error: cannot convert 'bool' to 'FILE*' in assignment   184 |         if(fp=fopen(filename,"r+")==NULL);     //以二进制的方式打开文件       |                                   ^       |                                   |       |                                   bool prog.cc:184:42: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]   184 |         if(fp=fopen(filename,"r+")==NULL);     //以二进制的方式打开文件       |                                          ^ prog.cc:184:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]   184 |         if(fp=fopen(filename,"r+")==NULL);     //以二进制的方式打开文件       |         ^~ prog.cc:185:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'   185 |         {       |         ^ prog.cc:192:27: warning: format '%d' expects argument of type 'int*', but argument 4 has type 'int' [-Wformat=]   192 |            fscanf(fp,"%s,%d,%f,%d",p->Name,p->KB,p->Pos,p->Type);       |                          ~^                ~~~~~       |                           |                   |       |                           int*                int prog.cc:192:30: warning: format '%f' expects argument of type 'float*', but argument 5 has type 'double' [-Wformat=]   192 |            fscanf(fp,"%s,%d,%f,%d",p->Name,p->KB,p->Pos,p->Type);       |                             ~^                   ~~~~~~       |                              |                      |       |                              float*                 double prog.cc:192:33: warning: format '%d' expects argument of type 'int*', but argument 6 has type 'int' [-Wformat=]   192 |            fscanf(fp,"%s,%d,%f,%d",p->Name,p->KB,p->Pos,p->Type);       |                                ~^                       ~~~~~~~       |                                 |                          |       |                                 int*                       int prog.cc: In function 'void write(Signal*)': prog.cc:227:25: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'char (*)[10]' [-Wformat=]   227 |                 scanf("%s",&filename);       |                        ~^  ~~~~~~~~~       |                         |  |       |                         |  char (*)[10]       |                         char* prog.cc: In function 'int main()': prog.cc:266:22: warning: suggest parentheses around assignment used as truth value [-Wparentheses]   266 |         while (option=6)       |                ~~~~~~^~

user: user-0
content: 这个在Dev上是可以编译成功的，只有一个错误

user: user-3
content: #include<stdio.h> #include<stdlib.h> #include<string.h> #include <time.h> struct Signal {     char Name[10];    //名字     int KB;            //开放状态     float Pos;        //地址     int Type;            //闭锁継电器状态     struct Signal *next,*front; }; struct Signal*head; void write(); void read(); void creat(); void chaxun(); void change(); void Change(); void delete_xinhaoji(); void myfree();  void creat() {     int n,i=0;     char answer=' ';     struct Signal*p1,*p2;     n=0;     p1=p2=(struct Signal*)malloc(sizeof(struct Signal));     p1->Pos=1.0;     printf("请输入第1架信号机的名称：\n");     scanf("%s",p1->Name);     printf("请输入第1架信号机的开放状态:\n");     scanf("%d",&p1->KB);     printf("请输入第1架信号机的地址:\n");     scanf("%f",&p1->Pos);     printf("请输入第1架信号机的闭锁继电器状态\n");     scanf("%d",&p1->Type);     head=NULL;     while(answer!='F'&&answer!='f')     {         n=n+1;         if(n==1) {             head=p1;         } else {             p2->next=p1;         }         p2=p1;         p1=(struct Signal*)malloc(sizeof(struct Signal));         getchar();         printf("请输入第%d架信号机的名称：\n",i+2);         scanf("%s",p1->Name);         printf("请输入第%d架信号机的开放状态：\n",i+2);         scanf("%d",&p1->KB);         printf("请输入第%d架信号机的地址：\n",i+2);         scanf("%f",&p1->Pos);         printf("请输入第%d架信号机的闭锁继电器状态：\n",i+2);         scanf("%d",&p1->Type);//输入后点击两次回车。         getchar();         i++;         getchar();         printf("是否继续(T/F)\n");         scanf("%c",&answer);         getchar();     }     p2->next=NULL; }  void Change() {     char s[20];     struct Signal* buf;     buf=head->next;     printf("\t请输入想修改的信号机:");     scanf("%s",s);     while(strcmp(buf->Name,s)!=0&&buf!=NULL) buf=buf->next;//找到要修改的信号机     if(buf==NULL)     {         printf("\t没有这个信号机!\n");         return;     }     //输入修改之后的数据     printf("\t信号机名称:");     scanf("\t%s",buf->Name);     printf("\t信号机开放状态:");     scanf("\t%d",&buf->KB);     printf("\t信号机位置:");     scanf("\t%f",&buf->Pos);     printf("\t信号机性质:");     scanf("\t%d",&buf->Type);     printf("\t修改成功!\n"); } void change() {     printf("%5s%15d%15g%15d\n",head->Name,head->KB,head->Pos,head->Type);     struct Signal *buf;     while(1)     {         printf("%5s%15d%15g%15d\n",head->Name,head->KB,head->Pos,head->Type);          buf = head->next;         while(buf!=NULL)        // 输出全部信息         {             printf("%5s%15d%15g%15d\n",buf->Name,buf->KB,buf->Pos,buf->Type);   // 输出信息             buf=buf->next;         }         Change();     } } void delete_xinhaoji() {     char Signal_num[20];     printf("\t请输入要删除的信号机的名称:");     scanf("%s",Signal_num);     struct Signal*temp;     for(temp=head->next;temp!=NULL;temp=temp->next)     {         if(strcmp(temp->Name,Signal_num)==0)         {             // 找到需要删除节点的位置             struct Signal*front=temp->front;             struct Signal*next=temp->next;             //进行删除操作；             front->next=next;             next->front=front;             free(temp);//释放temp所占用的内存；             printf("\t\t\t删除信号机成功！\n");             return ;         }     }     if(temp==NULL)     {         printf("\t无此信号机！\n");     } }  void chaxun() {     char s[10];     struct Signal*temp=head->next;     printf("请输入想查询的信号机\n");     scanf("%s",&s);     while(strcmp(temp->Name,s)!=0&&temp->next!=NULL)     {         temp=temp->next;     }     if(strcmp(temp->Name,s)!=0)     {         printf("\t没有这个信号机!\n");         return;     } else {         printf("\t此信号机名称:%s\n",temp->Name);         printf("\t此信号机的位置是%d\n",temp->KB);         printf("\t此信号机的开放状态是%g\n",temp->Pos);         printf("\t此信号机的闭锁继电器状态是%d\n",temp->Type);     } }  void read() {     //将文件中的内容读出到链表中，返回值为表头地址     FILE *fp;       //文件指针     int n=0;     char filename[10];     struct Signal*p2,*p,*pr=NULL;     printf("请输入需要打开的文件");     scanf("%s",&filename);     if((fp=fopen(filename,"r+"))==NULL)     //以二进制的方式打开文件     {         printf("cannot open file\n");//如有错则输出cannot open file         exit(0);     }     while(!feof(fp))        //判断文件位置标志是否移动到文件末尾     {         n++;         p=(struct Signal*)malloc(sizeof(struct Signal));         fscanf(fp,"%s%d%f%d",p->Name,p->KB,p->Pos,p->Type);         if(n==1)    {             head=p;             p2=p;         } else {             //创建链表             pr=p2;             p2->next=p;             p2=p;         }     }     if(pr!=NULL)     {        pr->next=NULL;     } else {        head=NULL;     }     fclose(fp);    //关闭文件 } void write() {     struct Signal*p;     FILE *fp;     int  i=0 ;     char filename[10];     p=head;     printf("请输入需要打开的文件");     scanf("%s",&filename);     if((fp=fopen("filename","w+"))==NULL)     {         printf("不能打开文件\n");         return;     }     while(p!=NULL)     {         fprintf(fp,"%5s\t%15d\t%15f\t%15d\n",p->Name,p->KB,p->Pos,p->Type);         p=p->next;         i++;     }     fprintf(fp,"-------------------------------------------------------------------------\n");     fprintf(fp,"*****共有%d个信号机*****\n",i);     fclose(fp);                  //关闭文件     printf("保存成功!\n"); }  void myfree() {     struct Signal*p=NULL;     for(;head!=NULL;)     {         p=head;         head=head->next;         free(p);     }     system("pause"); } int main() {     int option;     while (option=6)     {         system("cls");         printf("    主菜单：\n");         printf("1,  添加信号机：    \n");         printf("2,  查看信号机：    \n");         printf("3,  修改信号机信息：\n");         printf("4,  删除信号机：    \n");         printf("5,  保存信号机信息：\n");         printf("6,  读入信号机信息，\n");         printf("7,  退出菜单        \n");         printf("请选择：            \n");         scanf("%d",&option);         getchar();         switch(option)         {             case 1:creat();          break;             case 2:chaxun();         break;             case 3:change();         break;             case 4:delete_xinhaoji();break;             case 5:write();          break;             case 6:read();           break;             case 7:myfree();         exit(0);             default:printf("enter data error!\n");         }     }     return 0; }

user: user-0
content: 虽然编译成功了但是功能依然实现不了，输入数据后保存只能保存第一串数据，而且其他像其他程序运行的时候会一直出现这个问题，Process exited after 41.71 seconds with return value 3221225477 请按任意键继续. . .。我觉得是指针的问题，但是又不知道怎么改。

user: user-0
content: 有时候还会出现这个错误，	[Error] ld returned 1 exit status