重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

以下のようなデータのテキストファイルからそれぞれの数字をよみとって配列にいれるプログラムをつくりたいのですがどうしてもわかりません。たとえば
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 317202526
21112213028
1810243028
111214203129

A 回答 (5件)

http://www.stackasterisk.jp/tech/program/c01_07. …
http://www.stackasterisk.jp/tech/program/c01_08. …
http://www.geocities.co.jp/SiliconValley-Bay/743 …

C言語で外部からパラメータを与えるには、コマンドライン引数を使用します。一般的には
main(int argc, char *argv[])
という風に、mainに指定します。詳しくは上記URLを。


それと、空白区切りのテキストを読み込むのは別です。自分で作ったプログラムなら、読み込み方をプログラム中で記述する必要があります。
fopenでmainからの引数argvのファイル名をオープンしてfscanfで読み込めば良いと思います。



結局、外部からのパラメータの指定(この場合はファイル名)の指定方法が解らなかったという事ですか?
    • good
    • 0
この回答へのお礼

そう!!!!!、これだ!!!!!!
どうもありがとう

お礼日時:2005/08/13 15:49

>そんなことはわかってます


以下参照
http://10.k-server.org/housoku.html#osietekun

なにが解らないかを的確に説明してもらわないとアドバイスできませんし、逆ギレされても困ります。どこが解らないか解らないでは困ります。

>ていうか昔ポインタでなんかソース自体を読み込める方法があるのを覚えているのですが
>どうしても思い出せないです。たしかコマンドラインからファイル名を入れると
>そのファイルの中身を読み込むみたいなことができるとおもうのですが、、、。


ポインタとソースとコマンドラインという用語について正しく理解されていますか?

コマンドラインからファイルの中身を見るのはDOSならtype、UNIXならcatでできますよ。
ソースっていうのは、入力ファイルっていう意味ですか?#2さんが回答されている通り、ファイルの読込みにはポインタが必要です。
プログラムからコマンドラインって言う意味がよく解りません。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1499123

この回答への補足

そうではなく。ソースをコンパイルして実行形式にしますよね。(a.out,よみこむテキストをna.txtとしましょう)

./a.out na.txtと実行するとna.txtの中身を読み込んでna.txt中身を空白区切りで取り出せる方法があったと思います。

補足日時:2005/08/13 13:13
    • good
    • 0

課題ですか?どこまで考えたかを書いてもらったほうがよいですが。

ソースそのものズバリは書きませんので。

横に並んだデータを処理するのは少し面倒です。
読み込んだデータと別に参照用のポインタ(読み込んだデータを配列として参照)を用意して、格納先と参照用のポインタをそれぞれインクリメントしながら進んでいけばよいです。

この回答への補足

課題ではないです。自分で考えてもわからず手も足も出ないのできいているのですが、、、、。

>>横に並んだデータを処理するのは少し面倒です。
読み込んだデータと別に参照用のポインタ(読み込んだデータを配列として参照)を用意して、格納先と参照用のポインタをそれぞれインクリメントしながら進んでいけばよいです

そんなことはわかってます。
ていうか昔ポインタでなんかソース自体を読み込める方法があるのを覚えているのですがどうしても思い出せないです。たしかコマンドラインからファイル名を入れるとそのファイルの中身を読み込むみたいなことができるとおもうのですが、、、。

補足日時:2005/08/13 12:32
    • good
    • 0

ファイルを開いたり、ループを使って数値を一つずつ代入したりする技術はあるという前提で回答します。



たぶんテキストから数値に持ってくる方法が分からないんだと思いますが、一番簡単なのは fscanf を使う方法です。

 fscanf(fp, "%d", %x);

で、テキストファイルから数値が一つ読み取られ、x に代入されます。ループさせながら、この x を配列に代入していけばいいわけです。

この回答への補足

どうやってテキストの中身を読み込むのかがわからないです。

補足日時:2005/08/13 12:36
    • good
    • 0

ポインタは関係ないと思いますが。



a[0][0]=1;
a[0][1]=3;
・・・

で代入すれば良いのでは無いでしょうか。
数字でなくて文字列なら変わりますけど。

参考URL:http://www9.plala.or.jp/sgwr-t/c/sec09.html

この回答への補足

大量にあるデータを配列にいれたいのです。
いちいち手作業でいれていたらきりがないです。

補足日時:2005/08/13 11:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!