名前の入力

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

名前の入力

#1

投稿記事 by しなちく » 16年前

こんにちは、今ゲームを作っているのですが詰まってしまいました。
Visual C++2008で開発をしています。

RPGの作成をしていて、仲間の管理をしています。

typedef struct
{
char name[11]; // 名前
int hp; // HP
int mp; // MP
...
} kanri
kanri nakama;

名前は任意の名前を入力させる形にしています。
テキストボックスからなどではなく、選択された文字を nakama.name に一文字ずつ入れていくやり方でやっています。
しかし、一文字戻る 一文字削除 と言ったようないわゆる文字の消し方が分からなくなってしまいました。
例えば、 あいうえお という名前まで選択して、お を消したい場合です。
文字を入れていくなら、strcat_s でできましたが、最後に入力された文字を消すにはどうすればいいのでしょうか。

toyo

Re:名前の入力

#2

投稿記事 by toyo » 16年前

charだと文字コードはシフトJISでしょうか
名前に使える文字を2バイト限定にすれば
len = strlen(nakama.name) - 2;
if (len >= 0)
{
nakama.name[len] = '\0';
}
でできそうですが
1バイト文字と2バイト文字が混ざると処理が面倒になります
その場合はUNICODEにしてwchar_tで扱うほうが楽かもしれません

しなちく

Re:名前の入力

#3

投稿記事 by しなちく » 16年前

>toyo様
こんなに速くレスを頂いていたのに、返信が遅くなってしまって申し訳ございません。
基本2バイト文字のみでやっております。

len の型はintでよろしいのでしょうか?
そう解釈してtoyo様の記載してくださったコードを書いてみると

error C2440: '=' : 'const char [2]' から 'char' に変換できません。

といったエラーを吐かれてしまいました。
大変お手数かと思いますが、解決策を教えていただけないでしょうか。


--追記
申し訳ございません。
'\0' の部分を "\0" と勘違いしておりました。
結果、見事に動いてくれました。
toyo様ありがとうございました。

閉鎖

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