• 締切済み

C言語でテキストファイル内の行列を配列に格納する方法

C++6.0を使っています。 -0.30192   -0.01216 ・・・  0.055553 0.109746   -0.01408 ・・・  0.087976    ・        ・    ・      ・    ・        ・       ・   ・    ・        ・           ・ -0.31596   -0.05106 ・・・  0.041131 上のような行数約1500、列数7のデータがテキストファイルに保存されている時、次のような配列 data[2000][7] にひとつずつ格納する方法を知りたいです。 初心者なのでネットで調べてみてもよく分かりませんでした。 よろしくお願い致します。

みんなの回答

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

★1行ずつ char型の変数に読み込む。 ★読み込んだ、文字列を先頭から7つに区切り、実数へ変換・代入する。  char cBuf[128]; // 最大レコード長より大  int  i, iTop, iLine = 0;  ・  (ファイルオープン略)  ・  while( NULL != fgets( cBuf, 128, fp ) ){   iTop = 0;   for( i = 0; i < 7; i++ ){    data[iLine][i] = atof( &cBuf[iTop] ); // 変換・代入    iTop += 9; // 次の数文字列の先頭   }   iLine++;   ( 2000行 over 時のエラー処理略)  } ☆質問者様の例のように、全レコードの仕様が同じ場合のみ適応します。  なお、レコード毎に仕様が異なる場合はデリミタを判定し、iTop を定めます。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

fopen( ); for (i = 0; i < 2000; i++) { fgets( ); sscanf( ); /* or fscanf( ); */ } fclose( ); 自分が思いつく流れとしてはこんな感じですね。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

質問文からすると、テキストファイルから1行ずつ読み込む処理すらあやふやということでしょうか? まずは自分でコードが書けたところまでを補足してもらわないと、どのくらい回答すればいいのかわからず困る。

  • taku2888
  • ベストアンサー率60% (15/25)
回答No.1

for文などで、分解して取り込む関数を一つ作るのが一番早いかと・・・

関連するQ&A