ページ 11

配列方文字変数の初期値として複数の文字列定数を置きたい

Posted: 2016年5月26日(木) 18:38
by imagine
困った時だけで申し訳ありません。

[件名]のように、配列型の文字変数の初期値として 数値や、文字列を 以下のように設定したいのですが 方法はあるでしょうか?

const char ok[] ={ "\1ABC\0\2DEF\0\377" };
const char ng[] ={ 1, "ABC", 2, "DEF", 0xFF }; <<===== エラー

以下のように埋めたい。
// adday[0] :: 1
// adday[1] :: 'A'
// adday[2] :: 'B'
// adday[3] :: 'C'
// adday[4] :: 0
// adday[5] :: 2
// adday[6] :: 'D'
// adday[7] :: 'E'
// adday[8] :: 'F'
// adday[9] :: 0
// adday[10] :: 0xFF
// adday[11] :: ....

コンパイルすると "ABC"の段階でエラーとなります。

Re: 配列方文字変数の初期値として複数の文字列定数を置きたい

Posted: 2016年5月26日(木) 19:19
by can110
以下であればコンパイルは通りますが

コード:

#define NUL "\x00"
const char buf[] = {"\x01" NUL "ABC" NUL "\x02" NUL "DEF" NUL "\xFF" };
okの方法とあまり変わりませんね。

Re: 配列方文字変数の初期値として複数の文字列定数を置きたい

Posted: 2016年5月27日(金) 02:09
by imagine
ありがとうございました。
文字列定数の連結の方法。 助かりました。
でも、文字列と、数値を混在されたいので、 文字列を埋めたい部分には、文字列フラグと、文字列番号を置き、解析時に文字列に変換するようにしました。
[例]
#define STR 0xFB // 文字列フラグ
const char data[]={ 1, STR, 1, 2, STR, 2, 0xFF }
const char *string[]={ "ABC", "DEF" };

// STR, 1 ---> "ABC"
// STR, 2 ---> "DEF"