私は次のように、Cの画像ファイルのバイトを読み取るために、具体的PNGをしようとしています:なぜfgetcはCのあるPNGのバイトだけを読み込みますか?
#include <stdio.h>
int main(){
FILE* fd = fopen("logo.png", "r");
char c = fgetc(fd);
while(c != EOF){
printf("%c", c);
c = fgetc(fd);
}
return 0;
}
私はプログラムを実行すると、私は彼には、以下の取得:
<89>PNG^M
^Z
^@^@^@^MIHDR^@^@^@
なぜ特定のバイトに行き、その後ファイルを完全に終了するのですか?この問題をどうやって解決しますか?
また 'ロゴ」(はfopen .png "、" r ");' - > 'fopen(" logo.png "、" rb ");'バイナリモードで開きます。 – chux
rに比べてrbを使うほうがよいでしょうか?用途の違いを理解したいだけです。 – user3864563
一部のシステムでは、_text_モードのファイルで変換を実行します。 '\ r \ n 'のように(' 'b" 'はありません)<==>' \ r'です。 .pngファイルはバイナリファイルです( '' b "'を追加します)。翻訳は必要ありません。 – chux