- 締切済み
どうしてもわかりません?
以下のようなデータのテキストファイルからそれぞれの数字をよみとって配列にいれるプログラムをつくりたいのですがどうしてもわかりません。たとえば a[4][6]の配列を用意して横一列 1 3 17 20 25 26をa[0][0~5]に順番にいれたいです。 a[1][0~5]には次の2 11 12 21 30 28を入れたい!! ファイルポインタを何とかすればいいと思うのですがよくわりません。これを実現するCのソースを教えてください。 1 3 17 20 25 26 2 11 12 21 30 28 1 8 10 24 30 28 11 12 14 20 31 29
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- OsieteG00
- ベストアンサー率35% (777/2173)
http://www.stackasterisk.jp/tech/program/c01_07.jsp http://www.stackasterisk.jp/tech/program/c01_08.jsp http://www.geocities.co.jp/SiliconValley-Bay/7437/c/command.html C言語で外部からパラメータを与えるには、コマンドライン引数を使用します。一般的には main(int argc, char *argv[]) という風に、mainに指定します。詳しくは上記URLを。 それと、空白区切りのテキストを読み込むのは別です。自分で作ったプログラムなら、読み込み方をプログラム中で記述する必要があります。 fopenでmainからの引数argvのファイル名をオープンしてfscanfで読み込めば良いと思います。 結局、外部からのパラメータの指定(この場合はファイル名)の指定方法が解らなかったという事ですか?
- OsieteG00
- ベストアンサー率35% (777/2173)
>そんなことはわかってます 以下参照 http://10.k-server.org/housoku.html#osietekun なにが解らないかを的確に説明してもらわないとアドバイスできませんし、逆ギレされても困ります。どこが解らないか解らないでは困ります。 >ていうか昔ポインタでなんかソース自体を読み込める方法があるのを覚えているのですが >どうしても思い出せないです。たしかコマンドラインからファイル名を入れると >そのファイルの中身を読み込むみたいなことができるとおもうのですが、、、。 ポインタとソースとコマンドラインという用語について正しく理解されていますか? コマンドラインからファイルの中身を見るのはDOSならtype、UNIXならcatでできますよ。 ソースっていうのは、入力ファイルっていう意味ですか?#2さんが回答されている通り、ファイルの読込みにはポインタが必要です。 プログラムからコマンドラインって言う意味がよく解りません。
補足
そうではなく。ソースをコンパイルして実行形式にしますよね。(a.out,よみこむテキストをna.txtとしましょう) ./a.out na.txtと実行するとna.txtの中身を読み込んでna.txt中身を空白区切りで取り出せる方法があったと思います。
- OsieteG00
- ベストアンサー率35% (777/2173)
課題ですか?どこまで考えたかを書いてもらったほうがよいですが。ソースそのものズバリは書きませんので。 横に並んだデータを処理するのは少し面倒です。 読み込んだデータと別に参照用のポインタ(読み込んだデータを配列として参照)を用意して、格納先と参照用のポインタをそれぞれインクリメントしながら進んでいけばよいです。
補足
課題ではないです。自分で考えてもわからず手も足も出ないのできいているのですが、、、、。 >>横に並んだデータを処理するのは少し面倒です。 読み込んだデータと別に参照用のポインタ(読み込んだデータを配列として参照)を用意して、格納先と参照用のポインタをそれぞれインクリメントしながら進んでいけばよいです そんなことはわかってます。 ていうか昔ポインタでなんかソース自体を読み込める方法があるのを覚えているのですがどうしても思い出せないです。たしかコマンドラインからファイル名を入れるとそのファイルの中身を読み込むみたいなことができるとおもうのですが、、、。
- kapisan
- ベストアンサー率14% (1/7)
ファイルを開いたり、ループを使って数値を一つずつ代入したりする技術はあるという前提で回答します。 たぶんテキストから数値に持ってくる方法が分からないんだと思いますが、一番簡単なのは fscanf を使う方法です。 fscanf(fp, "%d", %x); で、テキストファイルから数値が一つ読み取られ、x に代入されます。ループさせながら、この x を配列に代入していけばいいわけです。
補足
どうやってテキストの中身を読み込むのかがわからないです。
- OsieteG00
- ベストアンサー率35% (777/2173)
ポインタは関係ないと思いますが。 a[0][0]=1; a[0][1]=3; ・・・ で代入すれば良いのでは無いでしょうか。 数字でなくて文字列なら変わりますけど。
補足
大量にあるデータを配列にいれたいのです。 いちいち手作業でいれていたらきりがないです。
お礼
そう!!!!!、これだ!!!!!! どうもありがとう