C - 小さなツールの作成 - 1つのことだけをうまくやる - パイプ
Head First C ―頭とからだで覚えるCの基本、 David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の 3章(小さなツールの作成 - 1つのことだけをうまくやる)、p.133(プールパズル)の解答を求めてみる。
コード
bermuda.c
#include <stdio.h>
int main()
{
float latitude;
float longitude;
char info[80];
while (scanf("%f,%f,%79[^\n]", &latitude, &longitude, info) == 3)
{
if (latitude > 26 && latitude < 34)
{
if (longitude > -76 && longitude < -64)
{
printf("%f,%f,%s\n", latitude, longitude, info);
}
}
}
}
temp.csv
1,2,info1
3,4,info2
5,6,info3
7,8,info4
27,-70,info5
30,-70,info6
-90,10,info7
入出力結果(Terminal, Zsh)
% cc bermuda.c -o bermuda
% cat temp.csv | ./bermuda
27.000000,-70.000000,info5
30.000000,-70.000000,info6
% cat temp.csv | ./bermuda | ./geo2json
data=[
{latitude: 27.000000, longitude: -70.000000, info: 'info5'},
{latitude: 30.000000, longitude: -70.000000, info: 'info6'}
]
% (./bermuda | ./geo2json ) < temp.csv
data=[
{latitude: 27.000000, longitude: -70.000000, info: 'info5'},
{latitude: 30.000000, longitude: -70.000000, info: 'info6'}
]
%