- 締切済み
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] にひとつずつ格納する方法を知りたいです。 初心者なのでネットで調べてみてもよく分かりませんでした。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- yama5140
- ベストアンサー率54% (136/250)
★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)
fopen( ); for (i = 0; i < 2000; i++) { fgets( ); sscanf( ); /* or fscanf( ); */ } fclose( ); 自分が思いつく流れとしてはこんな感じですね。
- koko_u_
- ベストアンサー率18% (459/2509)
質問文からすると、テキストファイルから1行ずつ読み込む処理すらあやふやということでしょうか? まずは自分でコードが書けたところまでを補足してもらわないと、どのくらい回答すればいいのかわからず困る。
- taku2888
- ベストアンサー率60% (15/25)
for文などで、分解して取り込む関数を一つ作るのが一番早いかと・・・