C - 小さなツール - 1つのことだけをうまくやる - 標準出力, 標準エラー
Head First C ―頭とからだで覚えるCの基本、 David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の3章(小さなツール - 1つのことだけをうまくやる)、p.125(極秘)の解答を求めてみる。
Makefile
all: secret_messages
./secret_messages < secret.txt > message1.txt 2> message2.txt
secret_messages: secret_messages.c
cc secret_messages.c -o secret_messages
コード
secret_messages.c
#include <stdio.h>
#include <stdbool.h>
// メッセージ1
// the submarine will surface at nine pm
// メッセージ2
// buy six eggs and some milk
int main()
{
char word[10];
int i = 0;
while (scanf("%9s", word) == 1)
{
i++;
if (i % 2)
{
fprintf(stdout, "%s\n", word);
}
else
{
fprintf(stderr, "%s\n", word);
}
}
}
入出力結果(Terminal, Zsh)
% make
cc secret_messages.c -o secret_messages
./secret_messages < secret.txt > message1.txt 2> message2.txt
% cat message1.txt
the
submarine
will
surface
at
nine
pm
% cat message2.txt
buy
six
eggs
and
some
milk
%