開発環境
- OS X Mavericks - Apple, ときどきWindows 8.1 + Cygwin64, MinGW (OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- C++ (プログラミング言語)
- g++(コンパイラ)
C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅣ部(高度なプログラミング概念)の16章(ファイル入出力)、16.13(プログラミング実習)、実習 16-3.を解いてみる。
その他参考書籍
- C++プログラミング入門 (グレゴリー サティア (著)、ダウグ ブラウン (著)、Gregory Satir (原著)、Doug Brown (原著)、望月 康司 (翻訳)、谷口 功 (翻訳)、オライリージャパン)
実習 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 コメント:
コメントを投稿