2つファイルを開いてデータを入力する方法とは?

このQ&Aのポイント
  • 2つのファイルからデータを抽出する方法を教えてください。
  • ファイル内のデータを組み合わせて新しいファイルを作成する方法を教えてください。
  • データを抽出して結合する方法について教えてください。
回答を見る
  • ベストアンサー

2つファイルを開いてデータを入力する

ifstream fin("ファイル名")を使って、 2つのファイルからデータを抽出するには どうすればよいでしょうか。 たとえば、以下のようなファイルがあります。 ファイル名:1.dat ------ 1 2.3 2 3.2 3 4.3 4 5.0 ファイル名:2.dat ------ 1 50.6 2 56.2 3 66.3 4 70.2 1.datの1、2列目のデータと2.datの2列目のデータを抽出して ファイル名:3.dat ------ 1 2.3 50.6 2 3.2 56.2 3 4.3 66.3 4 5.0 70.2 とするには、どうすればよいでしょうか。 どなたか教えていただけると大変助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

Linuxならpaste

参考URL:
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/347joinfilebyline.html
ishigamin
質問者

お礼

ご回答いただき、誠にありがとうございます。 大変参考になりました。

関連するQ&A

  • ファイルからの入力

    たとえば, 3行2列のテキストデータ 1 2 3 4 5 6 を,ファイルから読み込むとします. 入力用オブジェクトとして ifstream fin; として, while (!fin.eof()) { fin >>x>>y; x_array[i]=x; y_array[i]=y; i++; } といった感じでファイルから入力しています. 2列程度なら問題ないと思うのですが, 入力データが,たとえば 3行100列 となった場合には,上記のソースのような書き方では,対応できないと思います. どのように,すればいいのでしょか?? ご教授,お願いいたします.

  • C++でファイルから複数行のデータを入力する方法

    C++でファイル操作をプログラミングしています。 入力として使いたいファイルは以下のように記述されています。 1 2 3 2 2 2 54 57 65 のように数字の間にはスペースが入ってます。また3つ目の数字の後には 改行が入っています。 このようなデータを取り込むときはどのように記述すればいいのでしょうか? 今作ってみたコードは以下のようなんですけど、うまく格納されていません。 よろしくお願いします。 ifstream fin("ファイル名"); vector<int> x,y,z; while (!fin.eof()){ if (!(fin >> i)) break; x.push_back(i); if (!(fin >> i)) break; y.push_back(i); if (!(fin >> i)) break; z.push_back(i); }

  • 大量の入力ファイルを扱うとき、for文などで簡略化できる?

    例えば、"input_1.dat", "input_2.dat" ... "input_9.dat","input_a.dat" ... "input_z.dat"のように、 ファイル名が一定のフォーマットに従った 入力ファイル群があるとします。 (ファイル内の数値の配置フォーマットも一緒) これらのファイルの中身を fopen→fscanf→fcloseを使って読みこむとき、 FILE *fin1, *fin2; fin1 = fopen("input_1.dat","r"); fin2 = fopen("input_2.dat","r"); ... のようにファイル名をひとつひとつ読みこまず、 for, whileなどを用いて簡単に書けないでしょうか?

  • 定型書式のテキストファイルをExcelに取り込むマクロについて

    以下のような定型書式のテキストファイル(ファイル名はdata(連番).txt。Shift-JIS。改行コードLF)から、 ・<h2>~</h2>で囲まれたテキストのうち、改行やコメントを取り除いたもの(あああああああ) ・<!--コメント2-->直後の、最初の「DAT」に続く文字列(いいい) を、ExcelのC列、D列に取り込みたいのですが、抽出方法がよくわかりません。 なお、テキストファイルの体裁は一切変更できません。 ------------------------- data1.txt …… <h2> <!--コメント1--> あああ ああああ <!--コメント終了--> </h2> <!--コメント2--> DATいいいDATDうううDDATえええ …… -------------------------

  • ファイル入力

    1 20 2 30 3 95 4 52 5 90 3 Maximum  上記の様な入力ファイルinput.datのうち1~5行目のデータを表示するプログラムを作っています。  6行目は空白で、7行目は2列目の中で最大値をとる行の1列目の数値が入っています。  1列目の数値は最後の行を除いて重複することはありません。  入力データの行数はファイルによって最大20行まで変動します。列数は2列で固定です。  以下のプログラムのままでは6行目以降のデータも読み取ってしまい、出力がおかしくなってしまいます。  1~5行目のデータのみ出力するにはどうしたらよいでしょうか。  ご存知の方、お手数ですが教えてください。よろしくお願いします。 #include <stdio.h> #include <stdlib.h> #define row 20 #define col 2 int main(){ int i,j,data[20][2]; FILE *fp; if((fp=fopen("input.dat","r"))==NULL){ fprintf(stderr,"Cannot open file input.dat\n"); exit(1); } for(i=0;i<row;i++){ for(j=0;j<col;j++){ fscanf(fp,"%d",&data[i][j]); printf("%d ",data[i][j]); } printf("\n"); } fclose(fp); return 0; }

  • データファイルの入力方法

    データファイルの入力方法についての質問です。 フォーマットは以下↓の通り、1,2列目が日付,時間となっています。 (表記の都合上、半角スペースを_で置換しています。) 各行それぞれ3列目から最後の列までの和を計算したいと思っています。 問題点は以下の3点です ・1,2列目をとばしたい ・行によって列の数が異なる ・列の区切りのスペースの数がバラバラ 上の場合以外(つまりデータのみで列の数がそろっていて区切りも統一されている) のファイルでしたらfscanfを使ってできます。 ご助言をよろしくお願いします。 2006/06/10____10:10:10____320.25____351.2____561.00___2646.00 2006/06/10____10:10:11____320.000___310.00___561.00 2006/06/10____10:10:12____320.000___310.00___561.00___2646.0 2006/06/10____10:10:13____320.000___310.00___561.0____2646.00 2006/06/10____10:10:14____320.0_____310.00___561.00___260.0 2006/06/10____10:10:15____310.00____561.00___2646.00 2006/06/10____10:10:16____320.00____310.00___561.00___2646.00 2006/06/10____10:10:17____320.000___310.00___561.0____2646.0 2006/06/10____10:10:18____310.0_____561.00___2646.00 2006/06/10____10:10:19____320.000___310.00___561.00___2646.0 2006/06/10____10:10:20____320.000___310.00___561.00___2646.00 _

  • ファイル入力したデータの行数の数え方は?

    ファイル入力した漢字データ(全角)を読み込み、行数を数えながら逆から表示するプログラムはどうかいたらいいのですか? 実行結果例 (例として、次のようなA:_TEST.DAT を入力する) 「上を向いて、歩こう。涙がこぼ  れないように。泣きながら、歩  く一人ぼっちの夜。」 ファイル名を入力して下さい:A:_TEST.DAT ↓ 1: ぼこが涙。うこ歩、てい向を上 2: 歩、らがなき泣。にうよいなれ 3: 。夜のちっぼ人一く

  • datファイルをcsvに変換したい

    ある装置のデーターを抽出するとDAT形式のファイルがあるのですが それをCSVに変換しようとおもいEXCELなので分割してやってみたのですが 値が抜けているところがあると列ごとにうまく分離できません。 このような変換をできるソフト(マクロ?)などあるのでしょうか?

  • 100x100x100のファイルの読み込み方

    プログラミング全くの初心者なのですが、 100x100x100の整数で表されたファイルを読み込む場合、 #include<iostream> #include<fstream> using namespace std; int main(){ ifstream fin; fin.open("100x100x100.txt"); int matrix[100][100][100]; const int SIZE=100; for(int i=0; i<SIZE; i++){ for(int j=0; j<SIZE; j++){ for(int k=0; k<SIZE; k++){ fin>> matrix[i+1][j+1][k+1]; } } } fin.close(); return 0; } としてファイルを読み込んでいるのですが、他に良い方法はないでしょうか?最終的には、読み込んだファイルの各列ごとの平均値をとりたいと思っています。 誰かご教授お願いします。

  • 複数のエクセルファイルとシートからデータ抽出したい

    すみませんが教えてください! 複数のエクセルファイルがあり、それぞれに複数のシートがあります。 (ファイルによってシート数は異なります) そのすべてのファイル/シートから、C列の最後の行のデータを抽出し、集計ファイルに書き出したいのです。 書き出しのフォーマットは3セル使用して、ファイル名、シート名、データとしたいです。 すみませんが、よろしくお願いいたします。