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

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

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

#1

投稿記事 by turasan » 6年前

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;


}

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

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

#2

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

おそらく、多くの環境でchar型のサイズよりint型のサイズの方が大きいので、
データを書き込むべきでない場所にデータを書き込んでしまい、データが破壊されたのではないでしょうか?

[search=google]stack around the variable was corrupted[/search]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

turasan
記事: 21
登録日時: 6年前

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

#3

投稿記事 by turasan » 6年前

返信おそくなりました。

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

閉鎖

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