解決済み

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

  • 困ってます
  • 質問No.9373332
  • 閲覧数182
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 44% (16/36)

組込み系の仕事をしてます。
例えば、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 }

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

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

  • 回答No.1

ベストアンサー率 35% (10/28)

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

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

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

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

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

という感じです。

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 36% (1014/2751)

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

ベストアンサー率 62% (260/415)

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

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ