作者invalid (everlasting)
站内Electronics
标题Re: [问题]问个c语言问题
时间Sun Feb 25 16:50:54 2007
※ 引述《adddream (哆啦A孟)》之铭言:
: 了解
: 真是太感谢您罗
: 不过想再追问一下
: (1)为舍'\0'是表示false阿
更精确一点,在C/C++及一些其他语言中
'x'代表的型态是int (不是char*)
所以应该要说"\0"比较适当一点
"\0"的意思就是使该字元的ascii code值为\後面的数字
C/C++中也有一些方便记忆的序列,例如\n,\r,\b...
最早的C是没有boolean的型别的
所以用int来代表真假
0为假,非0为真
: (2)还有就是通常在阵列里头结尾(不管是指哪种阵列)不都是会加上'\0'吗?
: 还是说是我记错了@@'
这只有C-like string才是这样
这只是为了方便以最小的记忆体操作字串的技巧
你高兴自创一个不用\0的string也可以
只是就不能用string.h里面的函式啦
另外"\0"可以想成是signature,通常用来代表特定区块的边界
譬如说FAT32分割区中会以0xAA55代表分割区的开始
要注意的就是通常只有"文字"资料才会"只"利用signature来切割
(FAT32其实还有其他栏位去进行辨认)
如果你的资料是binary形式的
通常就会使用类似HTTP协定加注资料长度的方式来辨别区块的边界
要不然就要使用strip的方式,将冲突的signature先替换掉
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.204.89
※ 编辑: invalid 来自: 61.231.204.89 (02/25 16:58)
1F:推 zxvc:可是我用gcc compile: if("\0") printf("y"); 02/25 17:20
2F:→ zxvc:会印出『y』。 02/25 17:21
3F:→ zxvc:用:if('\0') printf("y");就不会印出y。 02/25 17:21
4F:→ zxvc:所以'\0'应该才是false。 02/25 17:21
5F:推 strike519:C_and_CPP 那里讨论会比较合适喔! 02/25 17:30