2014年4月3日木曜日

開発環境

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

その他参考書籍

実習 16-5.

コード(BBEdit, Emacs)

sample306_5.cpp

#include <iostream>
#include <cstring>

int main(int argc, char *argv[])
{
  char ch;
  int i;
  std::FILE *in_file;
  std::FILE *out_file;

  if (argc != 3) {
    std::cerr << "Usage: <src> <dst>\n";
    exit (8);
  }

  in_file = std::fopen(argv[1], "w");
  if (in_file == NULL) {
    std::cerr << "Unable to open '" << argv[1] << "'\n";
    exit (8);
  }
  
  for (i = 0; i < 256; ++i)
    std::fputc(static_cast<char>(i), in_file);

  std::fputc('\n', in_file);
  for (i = 255; i >= 0; --i)
    std::putc(static_cast<char>(i), in_file);
  
  std::fputc('\n', in_file);
  std::fclose(in_file);

  in_file = std::fopen(argv[1], "r");
  if (in_file == NULL) {
    std::cerr << "Unable to open '" << argv[1] << "'\n";
    exit (8);
  }
  out_file = std::fopen(argv[2], "w");
  if (out_file == NULL) {
    std::cerr << "Unable to open '" << argv[2] << "'\n";
    exit (8);
  }
    
  while ((ch = std::fgetc(in_file)) != EOF) {
    if ((ch & 0x80) != 0) continue;
    std::fputc(ch, out_file);
  }
  fputc('\n', out_file);
  
  std::fclose(in_file);
  std::fclose(out_file);

  return (0);
}

Makefile

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

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

clean:
 rm sample306_5

入出力結果(Terminal)

$ make && ./sample306_5 test.txt test.out
g++ -g -Wall -o sample306_5 sample306_5.cpp
$ cat test.txt
      
                   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������
  
      
$ cat test.out
      
                   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
$ 

0 コメント:

コメントを投稿