2011-12-19 12 views
-2

私はCでプログラミングするのが初めてで、CSVファイルから8 * 8の行列を読み込んで保存する方法を探しています。誰も助けることができますか?CSVファイルから8 * 8の行列を読み込んで保存する方法をお探しですか?

+4

どのように新しい、まさにあなたはCですか?あなたのプログラムに何かをさせるためには、* code *を書く必要があります。これまでにどのようなコードを書いていますか? –

+0

そして、あなたはそれをどこに保存したいのですか? – ArjunShankar

+0

よく私はcsvファイルに書きましたが、今から読んでいます。私はそれを行列に格納したいと思います。私は逆離散コサイン変換をしようとしています。あなたからの助けをいただければ幸いです。ありがとう – user427641

答えて

1

ABNFはここにあります。

Bisonを使用すると、この文法を解析することができます。

これはもちろん過剰ですが、将来便利になることができる非常に優れた解析ツールについてたくさん学習します。

1

strtokfgetsおよびato(f/i)およびfopenを参照してください。一般的な考え方は、ファイルを読み込み、コンマで区切ってから、必要なフォームに部分文字列を解析することです。

2

私はあなたが8×8マトリックスを参照してください参照してください。したがって、次元を知っているように、2次元配列を静的に割り当てることができます。それ以外の場合は、ファイルを一度解析してn個のX mを見つけ、それに応じて動的にメモリを割り当てる必要があります(メモリを動的に割り当てる場合は、それを忘れないでください)。

あなたの基本的なアルゴリズムは以下のようなものでなければなりません:

initialize _matrix_ 
initialize _row_ and _column_ to 0 

open the file 
read a line 
while the currently read line is not an empty line 
    split the line using comma as a delimiter 
    initialize the _column_ to zero 
    for all the elements (in the output of split) 
     add the element to _matrix_[_row_][_column_] 
     increment the _column_ by one 
    increment the _row_ by one 
    read the next line 
close the file 

次のような(エラー)条件の世話をする必要があります。

  • csvファイルが存在しません(オープン失敗)
    • マトリックスが動的に割り当てられている場合は、解放してから終了してください!
  • CSVファイルが空である(ゼロライン)
  • CSVファイルCSV形式になっていない行が含まれている(エラー解析)
  • ファイルの内容がどのタイプのものですか? charまたはint?どの範囲? (データ型エラー)
  • 8×8以上の要素がある場合はどうなりますか?それらを無視する?

@Daveが上記のように標準ライブラリ/文字列関数を使用し、この記事で説明したアルゴリズムを試してください。

関連する問題