
学校の課題で画像処理の平均値フィルタを作っているのですが、コンパイルは通るのに実行しようとすると「rep5.exe の 0x0018192f でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x01ecfb60 に書き込み中にアクセス違反が発生しました。」 というメッセージが出て実行できなくなってしまいます。
もし分かる方がいらっしゃったら教えていただけると幸いです
以下、問題のソースファイルです
void output(char* name, int *image,int width, int height)
{
FILE *fo;
int i = 0;
int k = i-width;
if((fo = fopen(name,"w")) == NULL){
fprintf(stderr, "File not found. - %s -\n",name);
exit(1);
}
fprintf(fo,"P2\n%d %d\n255\n",width,height);
for(i = 0; i < width*height; i++){
if(i != 0 && i % PGM_MAXNUM == 0){
fprintf(fo, " \n");
}else if(i != 0){
fprintf(fo, " ");
}
if(i % width == 0) //注目画素が左端なら
{
image[i-1] = 0;
image[i-2] = 0;
image[i-width-1] = 0; (←が出たところ)
image[i-width-2] = 0;
image[i-2*width-1] = 0;
image[i-2*width-2] = 0;
image[i+width-1] = 0; image[i+width-2] = 0 ; image[i+2*width-1] = 0; image[i+2*width-2] = 0;
}
if(i % width == 1) //注目画素が左端から一つ離れた所なら
{
image[i-2] = 0; image[i-width-2] = 0; image[i-2*width-2] = 0;
image[i+width-2] = 0; image[i+2*width-2] = 0;
}
if(i+width < width*height ) //注目画素が下端なら
{
image[i+width-1] = 0; image[i+width-2] = 0 ; image[i+width] = 0; image[i+width+1] = 0; image[i+width+2] = 0;
image[i+2*width-2] = 0 ; image[i+2*width-1] = 0; image[i+2*width] = 0; image[i+2*width+1] = 0; image[i+2*width+2] = 0;
}
if(i+2*width < width*height ) //注目画素が下から二列目なら
{
image[i+2*width-1] = 0; image[i+2*width-2] = 0 ; image[i+2*width] = 0; image[i+2*width+1] = 0;image[i+2*width+2] = 0;
}
if(i % width == width - 1) //注目画素が右端なら
{
image[i+1] = 0; image[i+2] = 0 ; image[i-width+1] = 0; image[i-width+2] = 0; image[i-2*width+1] = 0 ; image[i-2*width+2] = 0;
image[i+width+1] = 0; image[i+width+2] = 0; image[i+2*width+1] = 0; image[i+2*width+2] = 0;
}
if(i % width == width - 2) //注目画素が右端から二列目なら
{
image[i+2] = 0; image[i-width+2] = 0; image[i-2*width+2] = 0 ;
image[i+width+2] = 0; image[i+2*width+2] = 0;
}
if(i >= 0 && i < width ) //注目画素が上端なら
{
image[i-2*width-1] = 0;
image[i-2*width-2] = 0;
image[i-2*width]=0;
image[i-2*width+1] = 0;
image[i-2*width+2] = 0;
image[i-width-2] = 0; image[i-width-1] = 0; image[i-width] = 0;image[i-width+1] = 0;image[i-width+2] = 0;
}
if(i >= width && i < 2*width ) //注目画素が上端なら
{
image[i-2*width-2] = 0; image[i-2*width-1] = 0; image[i-2*width]=0; image[i-2*width+1] = 0;image[i-2*width+2] = 0;
}
image[i] = 1/25 * (image[i-2*width-2] + image[i-2*width-1] + image[i-2*width] + image[i-2*width+1] + image[i-2*width+2] + image[i-width-2] + image[i-width-1] +image[i-width]
+image[i-width+1] + image[i-width+2]+ image[i-2] + image[i-1] + image[i] + image[i+1] + image[i+2] + image[i+width-2] + image[i+width-1] +image[i+width] +image[i+width+1]
+image[i+width+2] + image[i+2*width-2] + image[i+2*width-1] + image[i+2*width] + image[i+2*width+1] +image[i+2*width+2]);
}
fprintf(fo," \n");
fclose(fo);
return;
}
No.2ベストアンサー
- 回答日時:
とりあえず、i == 0 のとき以下の値がいくつになるか考えてみましょう。
i-1
i-2
i-width-1
i-width-2
i-2*width-1
i-2*width-2
なお、添字関連で問題のある箇所は他にもありますのでご注意を。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VisualStudio2022でC言語プログ...
-
C言語のことです。写真(見にく...
-
visual studio 2022でのC#プロ...
-
c言語
-
Windows Formアプリからコンソ...
-
プログラマー達は何故、プログ...
-
最初に聞かれたこと
-
ArduinoでMouse関数を使用して...
-
C++でデスクトップGUIアプリ開...
-
C言語の関数のextern宣言
-
PIC12F1822でLED調光器を作りたい
-
C言語 関数、変数の宣言について
-
C言語について(初心者)
-
プログラミングc++を全く分か...
-
あってる
-
DNCL(共テ用プログラミング言語...
-
DNCL(共テ用プログラミング言語...
-
C# で 数式文字列処理を処理す...
-
Cのプログラムからアクセスでき...
-
プログラミング言語でアプリや...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語でwin32apiを使ってnotepa...
-
JavaScriptの条件分岐について(...
-
デバイスコンテキストに書いた...
-
DOSのdirコマンドで思うように...
-
segmentation fault
-
PHPでのIP制限の方法
-
エラー「書き込み中にアクセス...
-
python についての質問です
-
VBAの計算について
-
ショッピングカートで代引き手...
-
細線化のプログラム
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
DataGridViewの特定列に入力さ...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
Excel 1セル当りの文字数が2...
-
Excel VBA メール作成について ...
-
バイト列とバイナリ列の違いが...
おすすめ情報