概要
","でつながれた文字を配列に入れていく関数を作ってみます。
適当なので、1次元のみの対応。しかも領域の確保はしません。
void StringAsIn(ref array@string asX ,string szX)
{
int nA = 0;//コピー開始
int nL = 0; //ループ用
int nX = 0; //コピーする要素数用
string szA; //コピーする文字
for(;;)
if(szX.GetPart(nL,1) == ",")
{
asX[nX] = szX.GetPart(nA,nL - nA);
++nX; nA = nL + 1;
}
if(nL == szX.Length())
{
asX[nX] = szX.GetPart(nA,nL - A);
return;
}
++nL;}
return; }
作ったら動かしてみましょう。
void game_main(void)
{
array@string asX[100];
StringAsIn(asX,"ドーナツ,レモン,みんな,ファイト,空の色");
S(asX[2]);A;
}
//"みんな"と出力されます
解説
forで文字列を一文字ずつ調べていき、","が出た時点でそこまでの文字列をコピーして配列に格納します。
コピーしたらまた次の","まで調べていき、以下繰り返し。
文字列の最後まで来た時点で、最後まで文字列をコピーして格納します。