2014年8月24日日曜日

開発環境

Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の4章(複数のソースファイルの使用: 分割して構築する)、makeマグネット(p.203)を解いてみる。

その他参考書籍

makeマグネット(p.203)

コード(BBEdit, Emacs)

oggswing.h

void error(char *s);

oggswing.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "oggswing.h"

int main(int argc, char *argv[])
{
  FILE *in;
  FILE *out;
  char line[100];

  if (argc != 3)
    error("引数を2つ指定してください。");

  if (!(in = fopen(argv[1], "r")))
    error("ファイルを開けません。");
  
  if (!(out = fopen(argv[2], "w")))
    error("ファイルを開けません。");

  while (fscanf(in, "%99[^\n]\n", line) == 1) {
    fprintf(out, "%s\n", line);
  }
  
  return (0);
}

void error(char *s)
{
  fprintf(stderr, "%s\n", s);
  exit (1);
}

Makefile

oggswing: oggswing.h oggswing.c
 cc oggswing.c -o oggswing

swing.ogg: oggswing whitennerdy.ogg
 ./oggswing whitennerdy.ogg swing.ogg

入出力結果(Terminal)

$ make oggswing 
cc oggswing.c -o oggswing
$ make oggswing 
make: `oggswing' is up to date.
$ make swing.ogg 
./oggswing whitennerdy.ogg swing.ogg
$ cat swing.ogg 
Hello, World!
Hello, C!
$ cat whitennerdy.ogg
Hello, World!
Hello, C!
$ make swing.ogg 
make: `swing.ogg' is up to date.
$ cat swing.ogg 
Hello, World!
Hello, C!
$

0 コメント:

コメントを投稿