teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追加

2021/11/01 20:34

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -5,4 +5,6 @@
5
5
  array が 3 次元なのは 幅・高さ・RGB(各1バイト)でしょう。
6
6
  なら最小単位は R・G・B の各バイトですので array の型は (char*では無く) char でなければならないです。(なぜポインタにしているのか謎です。)
7
7
  それを 3 重ループで読むのであれば、 fread では 1 バイトずつ読むことになるはずです。
8
- 読み込むサイズは (sizeof(int) では無く) sizeof(char) もしくはすっきり 1 と書くことになります。
8
+ 読み込むサイズは (sizeof(int) では無く) sizeof(char) もしくはすっきり 1 と書くことになります。
9
+ …としましたが。
10
+ どうせ連続して配列の大きさ分を全部読むのでしたら、ちまちま 1 バイトずつ読まなくても header のように丸ごと前部読んでしまえば簡単ではないでしょうか。

1

追加

2021/11/01 20:34

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -3,6 +3,6 @@
3
3
  BMP のフォーマットの中でも一部に限定するとしてヘッダ解析を飛ばしてあるとしまして、まず strtol は不要ですから arrayi は無くすものと考えます。
4
4
 
5
5
  array が 3 次元なのは 幅・高さ・RGB(各1バイト)でしょう。
6
- なら最小単位は R・G・B の各バイトですので array の型は (char*では無く) char でなければならないです。
6
+ なら最小単位は R・G・B の各バイトですので array の型は (char*では無く) char でなければならないです。(なぜポインタにしているのか謎です。)
7
7
  それを 3 重ループで読むのであれば、 fread では 1 バイトずつ読むことになるはずです。
8
8
  読み込むサイズは (sizeof(int) では無く) sizeof(char) もしくはすっきり 1 と書くことになります。