关于Run-Time Check Failure #2
来源:互联网 发布:钱学森回国真相知乎 编辑:程序博客网 时间:2024/05/18 11:12
这个问题源自《The C Programming Language》P49 p3-2习题中,当输入一系列字符串后,再键入Ctrl - Z时,出现了。
代码:
当用L45的注释代替本身的while语句时,出现了上述错误,见下图:
分析:
1, 这个错误一般是因为给变量分配的空间出现越界访问导致的(绝大部分是数组越界),当L45中的while中的判读条件为:
(c = s[j]) != EOF时,就会导致这个错误的出现,修改成(c = s[j]) != '/0',则问题解决。
原因:EOF是文件结尾符,而'/0'是字符串结尾符,例如s = "abdc/0",本来原意是当while循环执行到s[4] = '/0'时,就
要结束函数escape了,但由于此时判断条件是eof,故当s[j] = '/0',仍然进入while的循环体继续执行里面的语句,这样
就将s[4]之后的95个'/0'全部都赋给t字符串了,当执行到c = s[99] != EOF时,仍然进入while循环体,导致++j,
j = 100,然后又调回到while判断条件中执行c = s[100] != EOF,此时问题来了,当执行c = s[100]时,访问字符
s[100]时,出现了越界情况(s数组的最大访问下标为99),所以出现了上述错误。
- 关于Run-Time Check Failure #2
- Run-Time Check Failure # 2
- Run-Time Check Failure #2
- Run time Check failure #2
- Run-Time Check Failure #2
- Run-Time Check Failure #2
- Run-Time Check Failure #2
- Run-Time Check Failure #2
- Run-Time Check Failure #2
- Run-Time Check Failure #2
- Run-Time Check Failure
- 解除 Run-Time Check Failure #2
- 转载:Run-Time Check Failure #2分析
- Run-Time Check Failure #2分析
- Run-Time Check Failure #2分析
- Run-Time Check Failure #2分析
- Run-Time Check Failure #2分析
- [转]Run-Time Check Failure #2分析
- Linux no acceptable C compiler found in $PATH错误
- oracle数据误删后恢复
- bus,device,driver三者关系
- 常用SQL语句
- xfire实现CS架构的服务发布
- 关于Run-Time Check Failure #2
- 设备初始化函数宏
- Android中Log机制详解
- 索引结构
- http 状态返回说明
- new
- ExtJs之Ext.data.Store
- 获取 JTextField的 内容变化的事件
- Acrobat X Pro Word中转换pdf 打印机报错的解决方法