質問: バイナリファイル(画像)のよみこみ レポートで1024×1024ピクセルの画像を、間引いて256×256の画像にしろというのが出されました。画像はrawファイルです。 それで、とりあえず画像を読み込んで、出力するプログラムを書いてみたんですが、コンパイルは出来るのに実行すると不正な処理とけいこくがでてきてしまいます。 ソースは #include main() { unsigned char in[1024][1024],out[1024][1024]; file *fp; int i,j; fp=fopen("aaa.raw","rb"); fread(in,sizeof(unsigned char),1024*1024,fp); fclose(fp); for(i=0;i<1024;i++){ for(j=0;j<1024;j++) out[i][j]=in[i][j]; } fp=fopen("bbb.raw","wb"); fwrite(out,sizeof(unsigned char),1024*1024,fp); fclose(fp); } です。 どこがいけないのかアドバイスいただきたいです。よろしくお願いします。
回答: こんにちわ。 mickjey2 さんもおっしゃられていますが、stack orverflow の可能性 が高いですね。 → ローカル変数が獲得される領域を超えて、変数を宣言したと言う事です。 解決策としては、 1) malloc で領域を獲得する。 2) in, out 変数をmain 関数の外で宣言する。 3) 一気にデータを読まずに、もう少し小さい単位でデータをread/write する。 といったところでしょうか?