c语言在线编译(c语言在线编译器手机版) | 您所在的位置:网站首页 › c语言代码在线编译器手机版 › c语言在线编译(c语言在线编译器手机版) |
c语言代码(在线)
这个程序我见过!地址如下。 程序是没有任何问题的。do..while只是为了提高程序的判断验错能力。给你解释一下: void insert() int i=n,j,g; //这里n是全局变量,它记录了总学生数 printf("input number:\n"); //这里是提示要插入(增加的人数),比如要增加10个学生,输入10,只增加1个学生就输入1,这个概念要清楚 scanf("%d",&m); { g=1; while(g) { g=0; printf("iuput %dth telephone:\n",i+1); //提示输入,提示你输入第n+1个学生的数据 scanf("%s",phon[i].tel); for(j=0;j if(strcmp(phon[i].tel,phon[j].tel)==0) //对字符串不能直接比较故用字符串比较函数strcmp()判断 { printf("that have ,please input again!\n"); //相等则说明输入重复,有重复立即退出该层循环并要求重新输入 g=1; break; //如有重复立即退出该层循环 printf("input %dth name:\n",i+1); scanf("%s",phon[i].name); printf("input %dth address:\n",i+1); scanf("%s",phon[i].add); printf("input %dth telephone:\n",i+1); scanf("%s",phon[i].tel); printf("input %dth E-mail:\n",i+1); scanf("%s",phon[i].mail); if(g==0) //如果g==0,说明输入正确(也就是无重复),那么i加1表示实际人数加1 { i=i; //这句去掉,多余无用 i++; }while(i n+=m; //输入完成后总学生数为n+m,把这个数字保存到全局变量中供排序函数等其他函数调用 printf("complate.\n\n"); 再说明一点,这里新增加的学生,或者是改动学生的数据都只是保存在内存中,并没有真正写入到硬盘的文件tonxunlu.dat中,所以要把结果保存到文件中,退出程序时必须调用功能模块save()函数将内存中的有关数据(包括增加和改动后的)全部写入到文件tonxunlu.dat中。这一点源程序已经说明得很清楚。 当然如果你不想在退出前执行save()函数模块,可以在insert()函数中的最下面调用该save()函数也可以,也就是: void insert() ...... n+=m; save();//这里 printf("complete.\n\n");//此单词写错 }不太明白你所说的插入数据是什么意思,那个insert函数就是实现了将数据存入对应的结构体数组中,如果发现电话号码相同的,跳过重新输入。 不过觉得其中的 do--while 语句好像不太对吧。 }while(condition); 好像没有这种用法吧:while 后面接语句的。 { g=1; while(g)//---------- { g=0; printf("iuput %dth telephone:\n",i+1); scanf("%s",phon[i].tel); for(j=0;j if(strcmp(phon[i].tel,phon[j].tel)==0) { printf("that have ,please input again!\n"); g=1; break; //如有重复立即退出该层循环 }文件作为可读写文件打开 "r+" 或 "w+" 或 "rb+" 或 "wb+" (取决于原来文件ASCII文件还是二进制文件 ) 插入地点以后的数据 要 往下推一个 结构长度,要从最后一个 结构起,读一个写一个,读一个写一个,一直做到插入位置。 递推完必,写入新的插入数据。 visual studio Express是免费的。 Dev C++的编译器就是GCC。运行出错应该是你的代码的原因。 |
CopyRight 2018-2019 实验室设备网 版权所有 |