RAWファイルを読み込み、書き出すプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
いちこ
記事: 62
登録日時: 13年前
連絡を取る:

RAWファイルを読み込み、書き出すプログラム

#1

投稿記事 by いちこ » 12年前

初心者ですが、宜しくお願いします。
ただ今、既存のRAWファイルを読み込み、書き出すだけのプログラムを作成しています。

コンパイルは通ったのですが、実行をすると、「問題が発生したため、プログラムが正しく動作しなくなりました。このプログラムを閉じてください。」と警告が出てきて、プログラムが止まってしまいます。
どこを改善すればよいのかわかりません。
勉強不足で申し訳ありませんが、ご教示いただけるとうれしいです。
宜しくお願いします。

コード:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	FILE *fp1,*fp2;
	unsigned char buf[1600*1600];
	int i;


	//入力画像(RAWファイル)のオープン
	if((fp1=fopen("Landsat1.gray","rb"))==NULL){
		printf("ファイルオープンエラー\n");
		return 1;
	}

	//出力画像(RAWファイル)のオープン
	if((fp2=fopen("OutSample.gray","wb"))==NULL){
		printf("ファイルオープンエラー\n");
		return 1;
	}

	
	//入力画像の読み込み
	for(i=0; i<1600*1600; i++){
		fread(&buf[i],1,1,fp1); //配列bufにデータを読み込む
	}

	
	//出力画像の書き出し
	for(i=0; i<1600*1600; i++){
		fwrite(&buf[i],1,1,fp2); //配列bufからデータを書き出す
	}

	fclose(fp1);
	fclose(fp2);

	return EXIT_SUCCESS;
}

nil
記事: 428
登録日時: 13年前

Re: RAWファイルを読み込み、書き出すプログラム

#2

投稿記事 by nil » 12年前

バッファオーバーランは起こしていないようですが……
デバッガとブレークポイントを使ってどこでエラーが起きているのかを把握できますか?

ジンセイ

Re: RAWファイルを読み込み、書き出すプログラム

#3

投稿記事 by ジンセイ » 12年前

ウィンドウズのスタックサイズはいくつか知りませんが、
スタックが溢れてしまっている可能性が高いと思います。
試しに以下のように書き換えてみるとどうでしょう?

- unsigned char buf[1600*1600];
+ static unsigned char buf[1600*1600];

tamaneko

Re: RAWファイルを読み込み、書き出すプログラム

#4

投稿記事 by tamaneko » 12年前

unsigned char buf[1600*1600];
澄みません、計算が苦手で分らないのですが、これ何バイトになるんですか?
2.56Mバイトでしょうか?

いちこ
記事: 62
登録日時: 13年前
連絡を取る:

Re: RAWファイルを読み込み、書き出すプログラム

#5

投稿記事 by いちこ » 12年前

>>涼雅さん
返信ありがとうございます。
デバッガとブレークポイントはまだ一度も使ったことがなく、とても疎いので、今すぐに把握することはできません><
せっかく指摘していただいたのに申し訳ありません。今後、使用を試みようと思います。

>>ジンセイさん
返信ありがとうございます。
書き換えてみたことろ、ちゃんとファイルを生成することができました!
ありがとうございます!

>>tamanekoさん
返信ありがとうございます。
2500KBくらいになると思います。

いちこ
記事: 62
登録日時: 13年前
連絡を取る:

Re: RAWファイルを読み込み、書き出すプログラム

#6

投稿記事 by いちこ » 12年前

解決にチェックを入れるのを忘れておりました。
みなさん本当にありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る