落書きノート

ふと自分が気になった事を書いてます

C/C++ UNIX 標準入力を標準出力へコピーその2

#include "apue.h"

int main(void){
  int c;

  while((c = getc(stdin)) != EOF)
    if(putc(c, stdout) == EOF)
      err_sys("output error");

  if(ferror(stdin))
    err_sys("input error");

  exit(0);
}

getc関数で、stdinつまり標準入力の文字を1文字ずつ読み込んで行き、読み込んだ文字をputc関数でstdoutつまり標準出力に出力するプログラム。標準入出力の定数stdinとstdoutは<stdio.h>で定義されている。

> clang stdin_to_stdout_2.c -o stdin_to_stdout_2 -I apue.3e/include -L apue.3e/lib -lapue

実行結果は以下のとおり。

> ./stdin_to_stdout_2 < test.txt
abcd