こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語で長い配列データの書き方

組込み系の仕事をしてます。
例えば、20種類の機種がある機械で、個々の制御データ(パラメタ)が100個先にエクセルでデータを整理して表化します。
      機種0  機種1  機種2 …機種19
0_洗剤量   0   100   200   1900
1_水量    1   101   201   1901
2_風呂水   2   102   202   1902
 :
99_脱水時間 99   199   299   1999
こんな感じで。
これを、テキストエディターで書くとどうしても縦と横が逆になり、
パラメタを書き添えるのが困難です。
     /*0_洗剤量*/  /* 1_水量*/←パラメタが横書きで横に長くなってしまう
/*機種0*/ { 0,      1,      2, … 99 }
/*機種1*/ {100,     101,     102, … 199 }
/*機種2*/ {200,     201,     202, … 299 }
 :
/*機種19*/{1900, 1901, 1902, … 1999 }

どうしてもパラメタが横書きで横に長くなってしまいます。
他に書く方法はありますか?
よろしくお願いします。

投稿日時 - 2017-09-11 10:03:44

QNo.9373332

困ってます

質問者が選んだベストアンサー

C言語はあくまでもプログラミング言語です。小さめのデータはいいが、大量のデータはリソースまたは外部ファイルとして読み込むように処理したほうがいいと思います。

なので、これらのデータをエクセルで入力・編集し、CSVなどで出力したファイルを読み込んで処理してはいかがでしょうか。そうすれば、プログラマ以外のプロジェクト・メンバーでもデータの更新や変更が簡単など、様々なメリットがあります。

環境やハードの制約でリソースや外部ファイルとして読み込めないのなら、見やすさのために、データを行単位で書くのではなく、ブロック単位で書く方法もあります。一行を一ブロックとして記述し、ブロックの間を空行で区切るやり方です。長くなりますが、見やすくなり、ミスも見つけやすくなります。

/*機種0*/ 
{ 0,      1,      2,
3. 4. 5,
  … 
99
},

/*機種2*/ 
{100,     101,     102, … 
  … 
199
},

という感じです。

投稿日時 - 2017-09-11 11:10:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

エクセルでデータを作っているのなら、CSVでファイル出力するとか、エディタの仕様によってはコピー&ペーストするだけ。
それで不都合なら、エクセルで、{}やカンマ付きの1つの文字列に変換する式を書くだけ。
これなら、行がどんなに長くなっても間違えることはない。

投稿日時 - 2017-09-12 14:42:35

ANo.2

awk や perl なんかで変換して include すればいいと思います。一々手書きで C コードに変換なんて間怠っこしくてしょうがない。その手順をスクリプトなり Makefile に書いておけば、メンテナンス上も自動化できていいです。

投稿日時 - 2017-09-11 13:39:37

あなたにオススメの質問