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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
imagine
記事: 7
登録日時: 9年前

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

#1

投稿記事 by imagine » 9年前

困った時だけで申し訳ありません。

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

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"の段階でエラーとなります。

can110
記事: 27
登録日時: 10年前

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

#2

投稿記事 by can110 » 9年前

以下であればコンパイルは通りますが

コード:

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

imagine
記事: 7
登録日時: 9年前

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

#3

投稿記事 by imagine » 9年前

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

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

閉鎖

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