标题: C语言字符串特性
作者: 老虎会游泳 @Ta
时间: 2011-07-07
在C语言中,字符串是以0x00做结束符的,也就是说,在遇到0x00后,不管后面还有没有内容,用C语言写出的程序都会认为字符串已结束。
利用这个特性我们可以很方便地不“等字符”地修改*.ext,比如:
删除一段字符,只要把第一个字符改为0x00即可(把字符全部改成0x00会出错)。
截断字符(让程序忽略后面的字符),把截断的位置改成0x00
这也可以解释为什么CMNET改成CMMM后运行完全正常。事实上,此时程序读取到的就是CMMM四个字符,第五个是0x00,因而程序遇到它就停止读取了。
这也可以解释,当文本文件中插入0x00时,阅读时为什么会从插入位置断开了。
感谢C语言字符串的特性,因为它,修改变得更加灵活。
注:0x??表示十六进制数,表示一个字节的十六进制值,不表示字符本身。
[隐藏样式|查看源码]