ページ 11

配列に数値を入力して、文字に変換

Posted: 2014年4月16日(水) 20:12
by turasan
char型の配列に、scanfを使用して数値(文字コード)を入れていき、文字として出力
するプログラムを作りました。

納得できない点があるので質問させてください。

要素数11のchar型の配列に、数値を代入し、最後のfor文で文字として出力しようとしたのですが、
これを実行すると、「stack around the variable 'ary' was corrupted」というエラーが表示されてしまいます。(環境はMicrosoft Visual C++ 2010 です。)

試しに、

コード:

char ary[12] = {0};
を、

コード:

int ary[12] = {0};
と、int型で宣言したところ、エラーなしで実行できました。

char型で配列を宣言したときの、上記のエラーは何を意味しているのでしょうか。

以下、作ったプログラム

コード:

#include<stdio.h>

int main()
{
	char ary[12] = {0};
	int i;
	
	for (i = 0; i < 12; i++){
	
		printf("ary[%d] = ", i);
		scanf("%d", &ary[i]);
	
	}
	
	for (i = 0; i < 12; i++){
	
		printf("%c", ary[i]);
	
	} 
	
	return 0;


}

Re: 配列に数値を入力して、文字に変換

Posted: 2014年4月16日(水) 21:14
by みけCAT
おそらく、多くの環境でchar型のサイズよりint型のサイズの方が大きいので、
データを書き込むべきでない場所にデータを書き込んでしまい、データが破壊されたのではないでしょうか?

[search=google]stack around the variable was corrupted[/search]

Re: 配列に数値を入力して、文字に変換

Posted: 2014年4月17日(木) 20:31
by turasan
返信おそくなりました。

1バイトのchar型の配列にint型の整数を直接入力しているので、メモリがうまく使われていませんでした。
ありがとうございます。