アクセス違反の原因が分かりません
Posted: 2014年2月21日(金) 23:53
フォルダのパスと画像ファイル名をchar変数に格納し、それらをstrcatで結合した文字列をファイルのパスとして画像を呼び出すプログラムを組んでデバッグしたところアクセス違反が発生してしまいました。
作成したプログラムの大まかな構造は以下の通りです
デバッグ中には自動変数と言う所に表示された変数の中でdata[0].picとimgが赤く表示されていたのでこれらの変数におかしな値が入っているのだと思われますが、どこで変な値が入ってしまっているのかが分かりません。
一体何故アクセス違反が起こってしまっているのでしょうか?また、どうしたらアクセス違反が起こらないように出来るでしょうか?
どなたかよろしくお願いします。
作成したプログラムの大まかな構造は以下の通りです
#include "DxLib.h"
int img[100];
struct card{
char *pic;
};struct card data[100];
void ini(){
int i;
for(i=0;i<100;i++){
img[i]=LoadGraph( "pic/null.png" );data[i].pic="";
}
}
void loadcarddata(){
data[0].pic="ChronomalyCrystalChrononaut.png";
img[0]=LoadGraph(strcat("pic/illu/",data[0].pic));//デバッグ停止地点
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE); // ウィンドウモードに設定
if( DxLib_Init() == -1 ){return -1 ;}//DXライブラリ初期化処理 エラーが起きたら直ちに終了
SetDrawScreen( DX_SCREEN_BACK ); //描画先を裏画面に設定
ini();
loadcarddata();
WaitKey() ; // キー入力待ち
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
一体何故アクセス違反が起こってしまっているのでしょうか?また、どうしたらアクセス違反が起こらないように出来るでしょうか?
どなたかよろしくお願いします。