文字("i")と、(char String[][ 256 ] = {"文字列"};)を結合して、
文字列("i文字列")にすることは可能でしょうか?
自分なりに調べて試してみたのですが、エラーになってしまいます。
なにか良い方法を知っていましたら、教えていただけるとありがたいです。
文字と2次元配列の結合
Re: 文字と2次元配列の結合
エラーが出てもいいのでソースを貼ってください。
「文字と2次元配列の結合」ではなくて、「文字と文字列の結合」ではないのですか?
「文字と2次元配列の結合」ではなくて、「文字と文字列の結合」ではないのですか?
Re: 文字と2次元配列の結合
試してみたのは、
a = "i" + String;
a = "i" + Stiring[0][256];
strcat("i",String);
strcat("i",String[0][256]);
だったはずです。
僕はまだ初心者なので、他に方法が思いつきませんでした。
a = "i" + String;
a = "i" + Stiring[0][256];
strcat("i",String);
strcat("i",String[0][256]);
だったはずです。
僕はまだ初心者なので、他に方法が思いつきませんでした。
Re: 文字と2次元配列の結合
僕は今ノベルゲームを作ろうと思っています。
そこで、二次元配列の文字を表示していくのですが、
表示する文字が@だった場合、switchで次の文字に合わせて処理をするといった感じにしました。
今回しようと思っているのが立ち絵の表示で、(文章@I数値(0~9)文章)といった感じです。
case 'I':
// CPは二次元配列の参照位置([SP][CP])
CP ++;
// ここで、数値を画像の名前にしたい(i1、i2等)
CP ++;
break;
~~~
// ここで、数値に対応した画像を表示したい
DrawGraph(0,0,i(数値),TRUE);
そこで、二次元配列の文字を表示していくのですが、
表示する文字が@だった場合、switchで次の文字に合わせて処理をするといった感じにしました。
今回しようと思っているのが立ち絵の表示で、(文章@I数値(0~9)文章)といった感じです。
case 'I':
// CPは二次元配列の参照位置([SP][CP])
CP ++;
// ここで、数値を画像の名前にしたい(i1、i2等)
CP ++;
break;
~~~
// ここで、数値に対応した画像を表示したい
DrawGraph(0,0,i(数値),TRUE);
Re: 文字と2次元配列の結合
ぼ、僕だけでしょうか言っていることが良くわかりません・・・
そもそもcaseラベルには文字列は指定できません。すべて定数です。
そもそもcaseラベルには文字列は指定できません。すべて定数です。
C,C++,C#,これらを極めることを「3C政策」と言う
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字と2次元配列の結合
ノベルゲームでは文字と文字列についてはさけて通れないので、ちゃんと勉強されたほうが良いと思います。
ここで詰まっていると気の利いた禁則処理などを行うことは困難だからです。
方法としては、
1.GetDrawFormatStringWidth()で文字列の描画サイズを調べて座標を計算しながら、DrawFormatString()で描画していけば
文字列A文字列B文字列Cとつないで表示することも可能です。
2.表示用の文字列バッファを用意して、いったんそこに組み立てて表示するのも方法です。
1文字づつの判定時にコピーすれば良いでしょう。
文字は数値ですから。
ここで詰まっていると気の利いた禁則処理などを行うことは困難だからです。
方法としては、
1.GetDrawFormatStringWidth()で文字列の描画サイズを調べて座標を計算しながら、DrawFormatString()で描画していけば
文字列A文字列B文字列Cとつないで表示することも可能です。
2.表示用の文字列バッファを用意して、いったんそこに組み立てて表示するのも方法です。
1文字づつの判定時にコピーすれば良いでしょう。
文字列はできませんが文字はできます。オカピーα さんが書きました:ぼ、僕だけでしょうか言っていることが良くわかりません・・・
そもそもcaseラベルには文字列は指定できません。すべて定数です。
文字は数値ですから。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 文字と2次元配列の結合
char *strcat(char *s1, const char *s2);
strcatは連結した文字列をs1の配列に格納します。
従って、s1の配列は連結後の文字数が格納される充分大きな大きさでないといけません
>strcat("i",String);
これで、"i"は文字列リテラルです。ここに連結後の文字列を格納できません。
サンプルを載せます。
switch文の説明は恐らく先頭の一文字で区別したいと認識しました。
するとこんなふうに、分けたいということでしょうか?
strcatは連結した文字列をs1の配列に格納します。
従って、s1の配列は連結後の文字数が格納される充分大きな大きさでないといけません
>strcat("i",String);
これで、"i"は文字列リテラルです。ここに連結後の文字列を格納できません。
サンプルを載せます。
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[256] = "i";
char string[][256] = {"abc","def","ghi"};
strcat(str1, string[0]);
printf("%s\n", str1);
strcat(str1, string[1]);
printf("%s\n", str1);
return 0;
}
するとこんなふうに、分けたいということでしょうか?
non
Re: 文字と2次元配列の結合
質問者さんがしたいのは、文字列と文字の結合ではなく、文字列から文字を抽出ですね。ての さんが書きました:今回しようと思っているのが立ち絵の表示で、(文章@I数値(0~9)文章)といった感じです。
例えば
"あいうえお@l2かきくけこ"
というゲームのスクリプトである文字列の場合、
あいうえお
まで表示された後、'@'に続き'l'が現れたのを画像表示と認識、その次の文字(数字)を配列の添字として使いたいと。
数字は必ず1桁なのでしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 文字と2次元配列の結合
そういえば、@I数値(0~9)をどういう仕組で判別しているのかの説明が無いですね。
switch~caseだけでうまく扱えているのか心配です。
数値は将来を考えると1桁で済むとも思えませんがどうされるつもりでしょうか?
switch~caseだけでうまく扱えているのか心配です。
数値は将来を考えると1桁で済むとも思えませんがどうされるつもりでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。