switch语句,为什么case3执行不了?类似空循环?
switch语句,为什么case3执行不了?类似空循环?如何修改才能实现对名字的检索?
问题有好几个,最重要的原因是你的BN指针没有申请空间, struct WORKER *BN; //你这里只是声明了一个指针变量,编译器仅仅时在栈区给你生成了一个指针 该指针你没有初始化,因此是个野指针,如果是在windows系统中,出现的问题是不可预知的,但是在linux、unix系统中就会直接被系统关闭; int N, k, razm; //你定义了N,我估计是数据的总数,但是没有初始化,他的值不可预知 free(BN); //野指针释放,会出现二次释放的问题,windows下可能没有表现出来,linux就崩溃 你在switch语句中的1初始化了N和BN,也就是说,要执行其他的2,3你就必须先执行1,否则BN和N就是不可预知的。
因此我建议你给出一个标志,来确保只有执行了1后2,3才能被执行,否则2和3可顶会出问题 另外,在input函数中的f没有初始化,这是个隐患 看来你是初学者,给你一个我的教训: (1)指针一定要申请空间后在使用,否则出现问题都没有办法查,野指针就是炸弹 (2)变量在使用前一定要初始化,尤其是整形的,很太容易被忽略,但是问题很严重 (3)学会将运行过程的信息打印下来,以便你分析问题,这就是日志,实际生产环境下排错的唯一手段。
opdch 中的if( (BN + i)->name != nm),是否要把!=换成==; 有些细节是:其中input中变量f没有初始化,opd可以简化。 main中的变量razm没有初始化,运行中值会改变,是否要改为输入ramz的值或者初始化一下。
条件一定要写清楚呀
答:起标记作用的语句:rem表示跳转位置的语句: 定义性的语句详情>>
答:有兴趣就自己学,大学中想学好任何一门课程都要靠自己,老师只是一个摆设,他根本帮不上你任何忙。记住靠自己,想学就去学吧。详情>>
答:读指针用来记录文件当前文件之前的读取位置,它指向下一个将要读取的信息项详情>>