実行時にエラーがでました。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぬーくん

実行時にエラーがでました。

#1

投稿記事 by ぬーくん » 14年前

#include <pgm.h>
#include <stdio.h>

int main()
{

// 変数等宣言 -----------------------------------------------------------

int width, height; // 画像の縦画素数,横画素数用変数
gray **image_value; // 濃度(輝度)値保存用
gray max_value; // 最大濃度(輝度)値用変数

// pgm画像の読み込み ----------------------------------------------------

image_value = pgm_readpgm(stdin, &width, &height, &max_value);
int i,j,x,y,buf;
int image_out[j];

int m[9];


// ここから下に画像処理プログラムを書いてください------------------

for(i=0;i<width;i++){
for(j=0;j<height;j++){
m[0]=image_value[i+1][j+1];
m[1]=image_value[i+1][j-1];
m[2]=image_value[i-1][j+1];
m[3]=image_value[i+1][j-1];
m[4]=image_value[j+1];
m[6]=image_value[i+1][j-1];
m[5]=image_value[i+1][j ];
m[7]=image_value[i-1][j ];
m[8]=image_value[j];
for(y=0;y<8;y++){
for(x=0;x<8;x++){
if(m[x+1]<m[x]){
buf=m[x+1];
m[x+1]=m[x];
m[x]=buf;
}
}
}
return m[4];
image_out[j]=m[4]; /*メディアンフィルタ*/

}
}
for(i=0;i<width;i++){
for(j=0;j<height;j++){
image_value[j]=image_out[j];
}
}
// 処理プログラムはこの上まで -------------------------------------------



// pgmファイルの書き出し ------------------------------------------------

pgm_writepgm(stdout, image_value, width, height, max_value, 0);

return 0;

}
------------------------------------------------
コンパイル成功後
実行したときに
./executefile < sample_01.pgm> output1.pgm
9 [main] executefile 3064 _cygtls::handle_exeptions: Error while dumping
state (probably corrupted stack)
Segmentation fault (core dumped)
というエラーが出ました。どうしたらいいの分からないので教えてください。

アバター
toyo
記事: 35
登録日時: 14年前
住所: 宮崎県

Re: 実行時にエラーがでました。

#2

投稿記事 by toyo » 14年前

コード:

int i,j,x,y,buf;
int image_out[i][j];
で初期化してない変数を使ってるようです
雰囲気的に

コード:

int image_out[height][width];
のような気がします(コンパイラによっては使えませんが)

コード:

for(i=0;i<width;i++){
for(j=0;j<height;j++){

コード:

for(i=0;i<height - 1;i++){
for(j=0;j<width -1;j++){
/* 縦横逆で1少ない数まで */
かな

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 実行時にエラーがでました。

#3

投稿記事 by さかまき » 14年前

return m[4];以降は実行されないので調べる必要はありません。
エラーはそれ以前に起きているはずです。

m[1]=image_value[i+1][j-1];
m[2]=image_value[i-1][j+1];
m[3]=image_value[i+1][j-1];
m[6]=image_value[i+1][j-1];
m[7]=image_value[i-1][j ];
これらもi=0;j=0 の時はまずいと思います。

かな

閉鎖

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