Sean's Note: 9月 2009

2009年9月28日 星期一

[C/C++] read in binary mode

如果想讀資料中每個 byte 的資料,下例看似正常沒什麼奇怪的。

Data : 42 4D 20 2A 3C 1A 42 43 ...

fp = fread(“data”, “r”);

c = fgetc(fp);

但這其實是錯的,當讀到 1A 時,後面接著讀的資料全都會變成 FFFFFFFF,

因為 1A 在 ASCII 裡代表的是 Substitue,也就是 Crtl + Z,

不知道程式讀到這裡的時候,是不是自己判斷暫停了?

最保險的方法還是加上 b 吧!

fp = fread(“data”, “rb”);