2014年4月1日火曜日

開発環境

C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅣ部(高度なプログラミング概念)の16章(ファイル入出力)、16.13(プログラミング実習)、実習 16-3.を解いてみる。

その他参考書籍

実習 16-3.

コード(BBEdit, Emacs)

sample306_2.cpp

#include <iostream>
#include <fstream>

int main(int argc, char *argv[])
{
  const int DATA_SIZE = 20;
  int i;
  int n;
  std::ifstream in_file(argv[1]);
  std::ofstream out_file1(argv[2]);
  std::ofstream out_file2(argv[3]);

  if (in_file.fail()) {
    std::cerr << "Unable to open '" << argv[1] << "'\n";
    exit (8);
  }

  if (out_file1.fail()) {
    std::cerr << "Unable to open '" << argv[2] << "'\n";
    exit (8);
  }

  if (out_file2.fail()) {
    std::cerr << "Unable to open '" << argv[3] << "'\n";
    exit (8);
  }

  for (i = 0; i < DATA_SIZE; ++i) {
    in_file >> n;
    if (static_cast<int>(n) % 3 == 0)
      out_file1 << n << ' ';
    else
      out_file2 << n << ' ';
  }
  out_file1 << '\n';
  out_file2 << '\n';

  in_file.close();
  out_file1.close();
  out_file2.close();
  
  return (0);
}

Makefile

#
# FSFのg++コンパイラ用のMakefile
#
CC=g++
CFLAGS=-g -Wall
all: sample306_3

sample306_3: sample306_3.cpp
 ${CC} ${CFLAGS} -o sample306_3 sample306_3.cpp

clean:
 rm sample306_3

入出力結果(Terminal)

$ cat numbers.dat
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
$ make && ./sample306_3 numbers.dat numbers1.out numbers2.out 
g++ -g -Wall -o sample306_3 sample306_3.cpp
$ cat numbers.dat
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
$ cat numbers1.out 
3 6 9 12 15 18 
$ cat numbers2.out 
1 2 4 5 7 8 10 11 13 14 16 17 19 20 
$

0 コメント:

コメントを投稿