为什么OnChar里0x1a表示Ctrl_Z
来源:互联网 发布:网络瘫痪的原因 编辑:程序博客网 时间:2024/05/25 19:56
这样计算:Ctrl=0x40 ,所以Ctrl A =0x41-0x40=1.其他的Ctrl 类似.
'/n'在ASCII中是'LF'(Line Feed)即换行,而'/r'在ASCII中是'CR'(Carriage Return)即回车.
所以光有LF不会回到0列的.AT命令要求这样.
ctrl_Z 是Ctrl + Z(按下Ctrl键的时候同时按下Z键),输出^Z
就是空或者结束的意思,当然了也可以转化成条件的false
还有复杂一点的解释
首先,你的while形式是do while的,这样会造成无论如何,多读了一个字符,接下来p++,导致了最终的*p是没有存放任何字符的,真正的内容应该在*(p-2)的地方存放。
下面就牵涉到0x1a的问题了,某些C源文件编辑器会在每个C文件最后加入一个0x1a做标记(典型的就是tc2),而上面的代码就是检测这种情况,并且如果有0x1a作为标记的话,说明已经读到了文件的结尾,0x1a对我们的程序来说没有意义,所以把它改成'/0',但是如果是i<PROG_SIZE失败而导致的退出循环,则p-2这个位置的字符是有意义的,显然后来多读取的那个字符是没有用的,所以把p-1这个位置的字符置'/0',这样保证了返回的时候,返回的的确是一个字符串。
总结一下,0x1a是检测某些编辑器给文件强加的结束标志的(但是这个强制的标志并不是所有的编辑器都有,譬如VC++的编辑器就没有这个标志)。
- 为什么OnChar里0x1a表示Ctrl_Z
- XML文件处理过程中的0x1A 错误处理
- BYTE 16进制转化 1a 0x1a
- 0x1A——ASP.NET开发小记
- 为什么DirectX里表示三维坐标要建一个4*4的矩阵
- ASCII码0x1A使文件意外结束的处理方法
- ASCII码0x1A使文件意外结束的处理方法
- ASCII码0x1A使文件意外结束的处理方法
- c语言文件操作,读取二进制文件发现0x1A读取不了
- c++ 文件操作 fs.read 读出的字符数量不对,0x1A 在搞怪
- [MFc]onchar{vs2005}
- MFC 对话框响应OnChar()
- 在字符串里表示路径
- Android里特殊字符表示
- 为什么要用补码表示
- 为什么不用数组表示一切?
- 为什么要用补码表示
- 为什么补码可以表示负数?
- 关于联合
- 互联网2010大预测:QQ邮箱超网易 公司VC/PE化
- vs2008 创建打包安装程序
- linux不询问YES,批量覆盖
- 测试文章
- 为什么OnChar里0x1a表示Ctrl_Z
- delphi 控制打印机字体TLogFont
- 论文里面的一段XML代码
- 第十章:优秀程序员之道
- Windows Server 2008 自动登陆
- 开博了!!!
- J2EE程序的性能优化技巧
- 网页中居中层css一则
- tuxedo常用命令