人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CPad for Borland C++CompilerでC言語の独学をしています。いちいちコンソール画面からデータを入力するのは面倒なので、ファイルからデータを読み込ませたいのですが、そのような方法はありませんか?ご存知の方は教えて下さい。(知っている方のみお願いします)

●質問者: ddllss
●カテゴリ:コンピュータ 学習・教育
✍キーワード:Borland C++ C言語 データ ファイル
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● zifree
●10ポイント

http://www.ced.is.utsunomiya-u.ac.jp/lecture/2004/prog/p1/debugg...

コマンドプロンプトの応用

コンソールからscanfやgetsのような関数を使ってデータを読み込むようなプログラムでしたら、

リダイレクトと言う方法が使えます。


例えば読み込ませたいデータをinput.txtとして、入力したい内容を1行ずつファイルに書いておきます。

プログラム名をprogram.exeとすると、コンソールから

program.exe < input.txt

と入力して実行すればinput.txtの中身が1行ずつ読み込まれます。

(ファイルから標準入力へのリダイレクト)


余談ですが逆に

program.exe > output.txt

とすると、data.txtにprogram.exeがprintfなどで出力を行った結果が書き込まれます。

(標準出力からファイルへのリダイレクト)

http://www.wakayama-u.ac.jp/~miw/ip3/04/4/c-lang-test/stream.htm...

◎質問者からの返答

ありがとうございました。

コマンドプロンプトではできたのですが、ちょっと面倒です。cpadでは、(make or コンパイル)&実行の青矢印ボタンひとつでできてしまうのですが、cpadでやる方法はありませんか?


2 ● sasa7952
●5ポイント

http://homepage2.nifty.com/sak/w_sak3/doc/syspc/c_k08.htm

パソコン基礎知識 C 言語編 (その八) 標準ファイル I/O、読み込み、書き込み - SAK Streets

普通にfopenでファイルを読み込めばよいのではないでしょうか?


3 ● みずぴー
●10ポイント

http://e-words.jp/w/E383AAE38380E382A4E383ACE382AFE38388.html

リダイレクトとは 【redirect】 ─ 意味・解説 : IT用語辞典 e-Words

リダイレクトを使うといいと思います。


具体的には、実行ファイルをfoo.exe、データの書いてあるファイルをbar.txtとすと、コマンドプロンプトから


C:¥tmp> foo.exe < bar.txt


とします。(C:¥tmpの部分は入力しません.)


4 ● nitscape
●30ポイント

http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fopen.3.html

Manpage of FOPEN

http://www9.plala.or.jp/sgwr-t/c/sec17.html

ファイル入出力

C言語でファイルからデータを読み取る正攻法はファイル処理関数fopenやfreadを用いる方法です。2つ目のURLにあるソースコードを利用すれば一発です(読み込んだ結果がコンソールに出力されます)。

http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_...

MSDN Online Japan : File Not Found

http://yokohama.cool.ne.jp/chokuto/urawaza/api/CreateFile.html

CreateFile

Windowsに限って言えば(これは言いすぎかもしれませんが...)fopenを使うことはまずありません。

Windowsに備わるAPIのCreateFileで開いて処理するか、(これはVC++ですが)MFCのCFile系、ATLのCAtlFile系のクラスを使用するのが一般的です。

データ数が何万にもなる場合にはファイルをいちいち開いて使うのは面倒かつ効率が悪いのでメモリーマップドファイルを使うといいかもしれません。

http://hp.vector.co.jp/authors/VA017148/pages/install/bcc4.html

10分ではじめるBCC - CPad起動〜最初のプログラム

...というのが正攻法でのファイルからのデータ取り込み方法です。私はVC++&ATL派なのでCAtlFileを使うことが多いです。しかしfopenとCreateFileのどちらを使うにせよ、ちょっと敷居が高すぎるかもしれません。


プログラミングをしていてちょっとデータを入れたい!というときは、ソースコードに直接データを書き入れてしまうのが楽です(あまりにもまんまなので方法の説明は不要ですよね?)。おそらく小さいソースコードでしょうからビルドに何分もかかるわけではないので悩む時間を考えると結構楽です。ちょっとデータが必要なときは私もよく利用する手です。


次に(VC++で)楽なのはリソースを利用する方法ですが、CPadの場合はリソースの追加などがかなり面倒なのでNGかもしれません(ということで方法は省きます)。


http://nienie.com/~masapico/api_GetClipboardData.html

GetClipboardData

直接にファイルからではありませんが、楽なのはクリップボードを利用する方法です。

ファイルをエディタで開いてクリップボードにコピーしてからプログラムを実行し、プログラムの中でクリップボードの文字列を読み込めばデータを取り込めます。

これもかなり簡単な部類だと思います。

http://hp.vector.co.jp/authors/VA017148/pages/install/bcc4.html

10分ではじめるBCC - CPad起動〜最初のプログラム

...というのがまぁまぁな取り込み方法だと思います。

とはいうもののこれでもまだ敷居が高いかもしれません。


CPadでURLの3枚目の画像の設定画面で、「実行」タブを開きます。すると「実行時パラメータ」というのがあります。ここに「 < aaa.txt」のように入力すると、コマンドラインで

aaa.exe < aaa.txt

と実行したのと同じようになります。なんていうひねくれた方法がいいかもしれません。


5 ● lok
●20ポイント

http://hp.vector.co.jp/authors/VA017148/

きときと

URLはきときとのTOP。


思いつく方法を二つ提案します。

その1

まずソースをコンパイルする。

次にメニューの下のツールバーの’コマンド(C)’の入力ボックスに

ソース名から拡張子を除いたもの(test.c なら test)と

その後に引数(今回の質問の場合はファイル名)を入力して F7を押す。

引数のファイルがソースと同じフォルダに無い場合はフルパスを指定してください。

Ctrl+F9、F7 と押せば素早く実行できます。


その2

CPad のメニュー → 実行(R) → make実パラメータ(U) の実行 タブの実行時パラメータ(P) に

引数(今回の質問の場合はファイル名)を入力してOK を押す。

これでいつもどおり実行ボタンを押す(もしくは F9を押す)だけで

勝手に引数が追加されて実行されます。


...どうでしょうか?

◎質問者からの返答

まさしく欲しい答えをいただけました。

ただ、test<data.txt といったように<が必要でした。</p>

その2の方法も<data.txtと入力すると解決できました。ありがとうございました。</p>


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ