[DxLib] GetKeyInputString()について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
悩める人

[DxLib] GetKeyInputString()について

#1

投稿記事 by 悩める人 » 7年前

例えば、以下の例で問題が起きます。

コード:


#include <DxLib.h>

int main() {

	int x, y;
	TCHAR *text;
	int keyInput;
	int result;

	x = 320;
	y = 240;
	text = NULL;
	result = 0;

	DxLib_Init();

	keyInput = MakeKeyInput(16, false, false, false, false, false);
	SetActiveKeyInput(keyInput);

	while (!ProcessMessage() && !ClearDrawScreen() && !CheckHitKey(KEY_INPUT_ESCAPE)) {

		int result = CheckKeyInput(keyInput);

		GetKeyInputString(text, keyInput);

		if (text != NULL) {
			x = (640 - GetDrawStringWidth(text, GetStringLength(text))) / 2;
		}

		if (result == 0) {
			DrawKeyInputString(x, y, keyInput);

		}
		else {
			break;

		}

	}

	DeleteKeyInput(keyInput);

	DxLib_End();

}

※エラー処理は省略しています。

>GetKeyInputString(text, keyInput);
この部分でtextがNULLにしかなりません。

なぜですか?

アバター
V30
記事: 21
登録日時: 11年前
住所: 岡山県

Re: [DxLib] GetKeyInputString()について

#2

投稿記事 by V30 » 7年前

NULL値は、記憶領域がないよって意味になります。

http://dxlib.o.oo7.jp/function/dxfunc_input.html#R5N22
に、
引数 char *StrBuffer : 文字列を格納するバッファのアドレス
と書いてあるので、
バッファを作ってから関数を使えばいいと思いますよ。

つまり、

コード:

char text[1024];
みたいに文字列格納バッファ(記憶領域)を作って、
そいつを GetKeyInputString 関数に放り込めば良い
と思います。
素人的な質問は、素人に聞こう!

危ない危ない。
ちゃんとした人に質問しましょう。
ちなみに私は、ちゃんとしていない素人です。

悩める人

Re: [DxLib] GetKeyInputString()について

#3

投稿記事 by 悩める人 » 7年前

なるほど。あらかじめ領域を指定しておかなければいけなかったんですね。ありがとうございます。

返信

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