• 締切済み

C++で実行中のプログラムのその行を読み取りたい。

どういう関数を使えばよいのか分からないので教えてください。自分は今あるプログラムがありまして、その内容が、 ~~ AliFastJetFinder* jetFinder = new AliFastJetFinder(); jetFinder->RunTest("rec.dat");  ← AliFastJetFinder* jetFinder = new AliFastJetFinder(); jetFinder->RunTest("MC.dat");  ← ~~ となっていまして、←が違う四つの数字をはいていき、これを100回繰り返します。つまり実行すると、 ~~ 0.45 9.34 4.32 9.30 4.34 8.34 2.34 3.24 ~~ 5.38 3.45 9.23 0.43 2.34 3.54 3.21 2.34 ~~ 以下百回続く・・・。 今回お尋ねしたいのは、この四つの数字が何にも因数が与えられていないのですがこの数字たちが画面に出てくるたびにこの数字を読み取ってdatファイルにまとめたいのです。つまり実行中のプログラムに出てくる数字たちを逐次集めていきたいのです。最終的にこんな風に。 0.45 9.34 4.32 9.30 4.34 8.34 2.34 3.24 5.38 3.45 9.23 0.43 2.34 3.54 3.21 2.34 ~~ この数字たちに因数が与えられていれば簡単なのですが、違うパッケージ(jetFinder)にdatファイルをかませて数字をはかしているので、画面に数字四つが出てくる度にその数字をひろわなければいけないのです・・・。 なにか良い方法がないでしょうか? わかりづらい質問で申し訳ありません。よろしくお願いいたします。

みんなの回答

  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.3

プログラムAの出力をdatにまとめてプログラムBに読ませたい、ということでしょうか? #1の方も言ってますが、 hoge1.exe > hoge.dat ではだめですか? あと、謎の「因数」というキーワードですが... もしかして「引数(ひきすう)」をインスウと読み、誤変換で因数と 書かれているのではないかと邪推しました。 間違ってたらお詫びします。

noname#240995
noname#240995
回答No.2

初めて見る書き方だからよくわかりませんが・・・ C++でファイル出力だったらfstream使ってはいけないんですか? それかCのfopen,fcloseとか・・・

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

OS などの情報が一切ないし「因数」がなんのことやらさっぱりわからんのでなんともいえんのだけど, リダイレクトは不可?

関連するQ&A

  • C言語のプログラムで...

    下のプログラムは参考書にあったサンプルプログラムなのですが /* 関数の宣言 */ int print_struct(struct person dat); のところはなぜint型なのですか? #include <stdio.h> #include <string.h> /* 構造体の定義 */ struct person { char name[20]; /* 名前 */ double height; /* 身長 */ double weight; /* 体重 */ int bpl; /* 最低血圧 */ int bph; /* 最高血圧 */ }; /* 関数の宣言 */ int print_struct(struct person dat); /* main関数 */ int main(void) { /* 変数の宣言 */ struct person dat; /* 構造体のメンバーに値を代入 */ strcpy(dat.name,"山田太郎"); dat.height = 173.5; dat.weight = 63.0; dat.bpl = 98; dat.bph = 113; /* struct person関数を実行 */ print_struct(dat); return 0; } /* print_struct関数 */ int print_struct(struct person dat) { /* 画面に出力 */ printf("%s\n",dat.name); printf("%f\n",dat.height); printf("%f\n",dat.weight); printf("%d\n",dat.bpl); printf("%d\n",dat.bph); return 0; }

  • プログラムが実行されない?

    困っている内容を、簡単な例えで説明します。 PHPで「あるフォルダ内のwavファイルから、wmaとraファイルを変換作成する」 というプログラム(musicfile.php)を作り、バッチの実行ファイルを作成しました。勿論、変換に必要なexeは用意してあります。 バッチファイルの内容は『php musicfile.php』という単純なものになると思います。 さて、このバッチのショートカットを作成し、ブラウザ画面のボタンからそのショートカットを実行するように設定したのですが、思うように動作しません。 おかしいと思い、コマンドプロンプト画面から実行してみると、正常に動作します。 全く原因が解らないのですが、これはプログラムの記述が悪いのでしょうか? それとも、PHPの実行する環境(php.iniやApacheの設定)が悪いのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • C言語のプログラムみてください(isdigit)

    質問は2つあります。 (1) scanf関数を使って、 時給: と表示されたところに一文字打ち込み、数字以外ならばもう一度 時給: と表示されるプログラムを作りたいです。 以下のプログラムなら、 isdigit関数は数字を渡せば0以外の数を返す(真)から、 while文の条件式(偽)のようにすれば、 ・数字を一文字うちこめばwhile文の条件式にあてはまらない、すなわち下のプログラムではisdigit(payment) != 0 となり、return 0; が実行され、プログラムが終わる ・数字以外を一文字打ち込めばwhile文の条件式が真となり、printf関数とscanf関数が実行されて入力待ち状態になる と思ったのですが、どうやら違うようです。実際には ・数字一文字打てばまた入力待ちになる ・数字以外を一文字打てば永遠にprintf関数とscanf関数が実行される のはなぜでしょうか。 #include <stdio.h> #include <ctype.h> int main(void){ int payment; do{ printf("時給[円]:"); scanf("%d",&payment); } while (isdigit(payment) ==0) ; return 0; } (2) 実際には、一文字の制限なく、数字以外の何かを入力したら、再び入力待ちになるプログラムを作りたいのですが、これはどうしたらいいのでしょうか。 つまり 時給: のところに数字以外ならまた 時給: となるようにしたいのです。お願いします。

  • プログラムが実行できない

    アプリケーションソフトを実行できなくて困っています。 会社のパソコンでWindowsNTを使っているのですが、ノートンアンチウィルスからウィルスバスターに移行した際、まず、フリーソフトのダウンロードができないことに気づき、再起動などをしていたら、今度は、アプリケーション(拡張子はEXE) をダブルクリックすると、ウィルスバスターが開くようになり、会社のシステム担当の人に見てもらった所、前にフリーソフトをインストールしたものが悪さをしているから消すようにと言い残して、去っていきました。 その人が帰ったあと、コントロールパネルからアプリケーションの追加と削除をダブルクリックで開こうとしたら、アプリケーションを選択して下さいという画面になり、一応、programを選ぶと、そのプログラムが存在しないとでました。 その後、どのプログラムを実行しようとしても、アプリケーションの選択画面がでてきてしまい、ファイルのオプションでファイルタイプを正常なパソコンと見比べた所、あるはずのアプリケーションのファイルタイプの定義がありませんでした。追加しようにも、どのようにすればよいかわからず、大変こまっています。 アプリケーションで作ったファイルから(例えば、エクセルのxlsファイルなど)はアプリケーションが立ち上がりファイルを開くことができます。 直し方をおしえてください。

  • 既存のCプログラムをMS Visual C++へ移行して実行したい

    同じような質問がでていましたら、すみません。 いままでWS(unix)で作っていたC言語のプログラムをWindowsで実行しようと しています。 Microsoft Visual C++ 6.0 Proを購入し、 新規でプロジェクトを作成するところで止まってしまいました。 「プログラムをコンパイルして、あるバイナリファイルを読み込み、 指定したファイルへ結果を書き込む」 という操作がしたいのですが、プロジェクトの種類はどれにすればいいのでしょうか? また、ファイルを読み込む際、メインと関数は別のファイルになっているの ですが、コンパイルはどのように指定すればいいのでしょうか? もうひとつ、今までargv[]で入出力ファイルを指定していました。 # (メイン)(入力ファイル) (出力ファイル)のように この処理はVC++でできるのでしょうか? VC++の入門の本を購入したのですが、Cのプログラムについては なかなか載っていないので困っています。 よろしくお願いします。

  • プログラムを実行するとクエスチョンと出るのですが

    ショートカット及びEXEファイルをクリックするとQuestionと出てはい、いいえを選択しないと実行出来なくなりました なにかするたび聞かれてはいを選択しないとプログラムが実行出来ないのはなぜでしょうか? セキュリティソフトはウィルスバスター2009が入れてあります いいえを選択すると指定されたデバイス、パス、またはファイルにアクセスできません。アクセス許可がない可能性がありますと出ます

  • 会社で、eclipseを使ってjavaのプログラム

    会社で、eclipseを使ってjavaのプログラムを作る仕事をしていて、家でも練習しようと思いました。 eclipseの画面を見ていると、パッケージエクスプローラーに.javaファイルはありますが、.jarファイルがありません。 実行はできているのに、.jarファイルが生成されてないという事があるのでしょうか。 もしくは、表示の設定で、パッケージエクスプローラーにでてないだけでしょう。

    • ベストアンサー
    • Java
  • 全てのプログラムが実行できない

    お世話になります。 スタートメニューに登録してあるプログラムのリンク先のフォルダを移動した為、認識させるためにプロパティを開いてリンク先を変更したのですが、 その後からそのほかの全てのプログラム(IE、OEなど全て)が その変更したそのプログラムが開くようになってしまいました。 その後再起動してみると、どのプログラムを実行しても「ファイルを開くプログラムの選択」という画面がでてしまい、その画面で設定しても起動できません。 システムの復元などをしようにもそれさえも実効できず困っています。 どこかに修理に出す他ないのでしょうか? 何か解決策をご存知の方、よろしくお願いいたしますm(_ _)m

  • プログラムの実行

    このプログラム(下)なんですが、実行はできますが、実行結果が自分が思っているのとは異なる結果がでてしまいます。 'database.txt'には、1~100までの半角数字で入力した数字が1あがるごとに改行して保存しています。 僕は、例えばこのプログラムで2を入力すると、「一致しました」と表示されて、登録されていない数字345とかを入力すると「検索されませんでした」と表示されるようにしたいのですが、適当な数字を入れても「一致しました」と表示される場合があるのでこれを改善する方法を教えてください。 #define FNAME "database.txt" #define RECORDLEN 88 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *fp; char search[8],num[2]; int no = 0, find = 0, ip; fp = fopen(FNAME, "r"); if (fp == NULL) { perror("ファイルがオープンできません\n"); return -1; } printf("検索する番号の入力-- "); gets(search); while (1) { fseek(fp, RECORDLEN * no++, SEEK_SET); if (fscanf(fp, "%s", num) == EOF) break; if (strstr(num, search) != NULL) { find++; fscanf(fp, "%d", &ip); printf("番号結果: %d\n", ip); break; } } if(find==0){ printf("検索されませんでした\n"); } else{ printf("一致しました。\n"); } fclose(fp); return 0; }

  • javaプログラムの実行ファイル作成について

    下記のコードをPleiades44から実行可能ファイルを作成し(例えば、c:\bbb.jar) コンソールから実行しましたが、コンソールには何も表示がなく終了します。 注)GUIの他のコードはPCのコンソールから実行できました。 そのソースの内容は、キーボードから入力し、その入力をコンソールに表示するものです。 尚、このプログラムはPleiades44では、Debugや実行が出来、Eclipseのコンソールに ("input integer: ")と表示出来、次に数値を入力しますと、その内容が表示出来ます。 また、binホルダーに行き、java Sample1.Sample4でも旨く実行できました。 Q1)このプログラムの実行ファイルを作成して、をPCのコンソールから実行はできないものでしょうか? 尚、実行ファイルの作成方法は、ファイルを選択して、右クリックで、実行可能ファイルを 選択するものでした。 //======================== package Sample1; //Sample4.java import java.io.BufferedReader; import java.io.InputStreamReader; public class Sample4{ public static void main(String args[]){ int x=9; while(x!=0){ System.out.print("input integer: "); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); try{ String buf = br.readLine(); x = Integer.parseInt(buf); }catch(Exception e){ x = 0; } System.out.println("Input Number = " + x); } //while System.out.println("end"); } } //=============================== 以上、宜しくお願いします。

    • ベストアンサー
    • Java