typedef structで格納した文字を表示しようとすると強制終了します
Posted: 2013年7月28日(日) 15:44
DXライブラリを使用しています。
コードが2000行近くあって複雑なので必要な部分だけ貼り付けました。
Item;
Item_i;
は既に整数が代入されているとします。
if(Item==1)sprintf(Name,"%sを手に入れた!",item_name[mapevent_1[Item_i]]);
if(Item> 1)sprintf(Name,"%sを%d個手に入れた!",item_name[Item_i],Item);
この部分を消したら正常に動きました。
また、
if(Item==1)sprintf(Name,"%sを手に入れた!","アイテム");
if(Item> 1)sprintf(Name,"%sを%d個手に入れた!","アイテム",Item);
こんな感じに書き換えても正常に動きました。
おそらくバグの原因はitem_nameにあると思います
どうすればバグを避けられるのでしょうか?
ご回答お待ちしております。
#include "DxLib.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char Name[256];
int Item;//アイテム個数
int Item_i;//所持しているアイテム
typedef struct {char name[128];}ItemName; // アイテム格納用変数
ItemName item_name[100]={{"NoItem"},{"鍵"},{"薬(小)"},{"薬(中)"},{"薬(大)"}};//データ読み込み
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
if( DxLib_Init() == -1 )return -1 ;//DXライブラリ初期化
if(Item==1)sprintf(Name,"%sを手に入れた!",item_name[mapevent_1[Item_i]]);
if(Item> 1)sprintf(Name,"%sを%d個手に入れた!",item_name[Item_i],Item);
DrawString(0,0,Name,GetColor(255,255,255),TRUE);
WaitKey();
DxLib_End();
return(0);
}
Item;
Item_i;
は既に整数が代入されているとします。
if(Item==1)sprintf(Name,"%sを手に入れた!",item_name[mapevent_1[Item_i]]);
if(Item> 1)sprintf(Name,"%sを%d個手に入れた!",item_name[Item_i],Item);
この部分を消したら正常に動きました。
また、
if(Item==1)sprintf(Name,"%sを手に入れた!","アイテム");
if(Item> 1)sprintf(Name,"%sを%d個手に入れた!","アイテム",Item);
こんな感じに書き換えても正常に動きました。
おそらくバグの原因はitem_nameにあると思います
どうすればバグを避けられるのでしょうか?
ご回答お待ちしております。