コンパイルには通るがエラーで落ちる

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

コンパイルには通るがエラーで落ちる

#1

投稿記事 by HB » 9年前

C言語でHIT&BLOWを作ろうとしています。
現時点でコンパイルには通るのですが、実行するとエラーで落ちてしまいます。
助言の程をよろしくお願いします。

コード:

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

void syokika(int *q, int *w, int *e, int *r)
{
	int i, j, c;//配列のシャッフルに使用
	int ransu[9];//0~9の数字を格納

	/* 配列に0~9の数字を入れる */
	for (i = 0; i < 10; i++) {
		ransu[i] = i;
	}

	/* 乱数のシード値 */
	srand((unsigned)time(NULL));

	/* 乱数を使い配列をシャッフル */
	for (i = 0; i < 10; i++) {
		j = rand() % 10;
		c = ransu[i];
		ransu[i] = ransu[j];
		ransu[j] = c;
	}

	/* メイン関数に今回使用する4つの数字を渡す */
	*q = ransu[0];
	*w = ransu[1];
	*e = ransu[2];
	*r = ransu[3];
	
	/*////// チェック用 /////////
	printf("%d\n", ransu[0]);
	printf("%d\n", ransu[1]);
	printf("%d\n", ransu[2]);
	printf("%d\n", ransu[3]);
	printf("%d\n", ransu[4]);
	printf("%d\n", ransu[5]);
	printf("%d\n", ransu[6]);
	printf("%d\n", ransu[7]);
	printf("%d\n", ransu[8]);
	printf("%d\n", ransu[9]);
	///////////////////////////*/
}

int main(void)
{
	int kotae_1, kotae_2, kotae_3, kotae_4;
	syokika(&kotae_1,&kotae_2,&kotae_3,&kotae_4);
	printf("%d%d%d%d\n", kotae_1, kotae_2, kotae_3 kotae_4);
	return 0;
}
 

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: コンパイルには通るがエラーで落ちる

#2

投稿記事 by みけCAT » 9年前

21行目などでアクセスされるransu[9]は確保された領域の範囲外なので、アクセス(読み書き)してはいけません。
配列の要素数を増やしてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: コンパイルには通るがエラーで落ちる

#3

投稿記事 by みけCAT » 9年前

50行目で、kotae_3とkotae_4の間にコンマが抜けているのもまずいですね。
オフトピック
なんでこれコンパイル通るんだよ…どんなコンパイラを使っているんだ…?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

HB

Re: コンパイルには通るがエラーで落ちる

#4

投稿記事 by HB » 9年前

コンマが抜けて通ってるように見えるのは、どうにか直そうとした時に間違って消してしまったた物をコピペしたためだと思われます。
申し訳ありません。
言われた通り直してみたところうまくいくようになりました。
ありがとうございます。

閉鎖

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