Sean's Note: [C/C++] read in binary mode

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”);


1 則留言:

  1. 哈…2012/08/23 今天剛好遇到這個問題。
    讀一個RAW image讀到1A 之後的 pixel value 全部都是-1。
    改成rb之後果然解決了。

    回覆刪除