作者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)
推 zxvc:可是我用gcc compile: if("\0") printf("y"); 02/25 17:20
→ zxvc:會印出『y』。 02/25 17:21
→ zxvc:用:if('\0') printf("y");就不會印出y。 02/25 17:21
→ zxvc:所以'\0'應該才是false。 02/25 17:21
推 strike519:C_and_CPP 那裡討論會比較合適喔! 02/25 17:30