現在DXライブラリを使用しゲームを作っていまして、分からないところがあります。
と構造体を作り初期化をする部分で
このように初期化しようとすると、moneyとlifeは問題ないのですが、player_nameは書き方が違うようでエラーになってしまいます。
このように違う書き方をすれば、初期化自体は問題ないのですが、player_nameを表示する際に名前が出てきません。
名前を表示する時の書き方が間違っているかもしれないので、書いておきます。
質問したいこと
1.どのように書けば文字列を表示することができるのでしょうか?
2.何故初期化の書き方を変えると動くのでしょうか?(自分では、どっちで書いても同じだと思っています。書き方の間違いを指摘して下さい。)
この他の部分は正常に動作しているので、問題はないと思い、部分的に記述しました。
宜しくお願い致します。
構造体に入れた文字列の表示ができません。
Re: 構造体に入れた文字列の表示ができません。
問題なく動きます。サンプルです
#include "DxLib.h"
#include <string.h>
typedef struct
{
int money;
int life;
char player_name[20];
}ch_t;
ch_t ch;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int font[1];
int color[1];
ch.money = 0;
ch.life = 3;
strcpy_s(ch.player_name,"あいうえお");
ChangeWindowMode( TRUE ) ;
if( DxLib_Init() == -1 ) return 0 ;
color[0] = GetColor(255,255,255);
font[0] = CreateFontToHandle( "HGP明朝E" , 20 , 0 , DX_FONTTYPE_ANTIALIASING_EDGE);
DrawFormatStringToHandle( 0 , 0 , color[0] , font[0] , "%s" , ch.player_name );
WaitKey() ;
DeleteFontToHandle( font[0] ) ;
DxLib_End() ;
return 0 ;
}
non
Re: 構造体に入れた文字列の表示ができません。
char player_name[20];
を
char *player_name[20];
ポインタ変数にする。
ch.player_name = "あいうえお"; ←これを↓に変える。
char *c="00000000000000000000";//仮にいれる。自分は一応、要素数分だけなにかいれとく。
memcpy( player_name, c, 20 );
でできないでしょうか。
strcpyでもできます。使い方には気を付けましょう。20文字ならだいじょうぶでしょう。
memcpyよりstrcpyのほうが処理速度は速いです。(ほんと微妙ですが^^;)
自分は安パイとってmemcpyです。
を
char *player_name[20];
ポインタ変数にする。
ch.player_name = "あいうえお"; ←これを↓に変える。
char *c="00000000000000000000";//仮にいれる。自分は一応、要素数分だけなにかいれとく。
memcpy( player_name, c, 20 );
でできないでしょうか。
strcpyでもできます。使い方には気を付けましょう。20文字ならだいじょうぶでしょう。
memcpyよりstrcpyのほうが処理速度は速いです。(ほんと微妙ですが^^;)
自分は安パイとってmemcpyです。
Re: 構造体に入れた文字列の表示ができません。
かばさん。
char *player_name[20];
はおかしいのではないでしょうか。char型へのポインタ20個分の配列っていう意味です。
char player_name[20];
の部分は変更せずに
memcpy(player_name, c, 20);
とするならば可能です。
char *player_name[20];
はおかしいのではないでしょうか。char型へのポインタ20個分の配列っていう意味です。
char player_name[20];
の部分は変更せずに
memcpy(player_name, c, 20);
とするならば可能です。
Re: 構造体に入れた文字列の表示ができません。
無事、思ったように動きました。
strcpy等の文字列関係の関数について理解を深めることも出来ました。
皆さん、回答ありがとうございました。
問題は解決とさせて頂きます。
strcpy等の文字列関係の関数について理解を深めることも出来ました。
皆さん、回答ありがとうございました。
問題は解決とさせて頂きます。
Re: 構造体に入れた文字列の表示ができません。
ごめんなさい。
確かに、おかしいですね。
ポインタに要素数は間違いでした。
混乱させてすみません。
beatle さんの言うとおりです。
化猫さん自分のレス飛ばして下さい。
確かに、おかしいですね。
ポインタに要素数は間違いでした。
混乱させてすみません。
beatle さんの言うとおりです。
化猫さん自分のレス飛ばして下さい。