LZ的例子中输入了5个数据,再加上最后一个回车,这个回车被gets接收后实际存放在cs[5]中(此时i=5),而cs[5]已经越界。
在TC编译的目标码中,这实际破坏了ptstr[0]的内容。但是在VC编译的目标码中,main中的变量地址顺序与TC相反,是j,i,ptstr,cs,因此虽然cs[5]已经越界,但在本程序中没有产生错误后果。
把while(gets(cs[i]!=NULL&&cs[i][0]!='\0')加一个条件:i<N就OK了
代码输入完后按F2来存盘。要进行编译最简单的是按F9用MAKE实用程序,编译并且连接生成EXE文件。此时如果程序中有错误,编译器会在底下的消息窗口给出错误信息,光标移到消息条上,按ENTER或F6可回到编辑窗再修改程序。可以通过设置断点和监视项来调试程序。
可以按F8或F7单步执行程序。
F10可以从EDIT切换到菜单栏. F1 : 打开帮助 F2 : 保存文件 F3 : 打开文件 F5 : 缩放窗口
Alt+F5 : 查看输出 F7 : 单步跟踪 F8 : 跟踪执行
Alt+F9 : 编译文件 F9 : Make文件 Ctrl+F9 : 编译运行