C - 小さなツール - 1つのことだけをうまくやる - データ形式の変換
Head First C ―頭とからだで覚えるCの基本、 David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の3章(小さなツール - 1つのことだけをうまくやる)、p.105(ポケットコード)の解答を求めてみる。
Makefile
all: a.out
./a.out
a.out: main.c
cc main.c
コード
main.c
#include <stdio.h>
#include <stdbool.h>
int main()
{
float latitude;
float longitude;
char info[80];
int started = false;
puts("data=[");
while (scanf("%f,%f,%79[^\n]", &latitude, &longitude, info) == 3)
{
if (started)
{
puts(",");
}
else
{
started = true;
}
printf("{latitude:%f, longitude: %f, info: '%s'}",
latitude, longitude, info);
}
puts("\n]");
}
CSVファイル
sample.csv
42.363400,-71.098465,Speed = 21
42.363327,-71.096588,Speed = 23
42.363255,-71.096710,Speed = 17
入出力結果(Terminal, Zsh)
% make < sample.csv
cc main.c
./a.out
data=[
{latitude:42.363400, longitude: -71.098465, info: 'SPeed = 21'},
{latitude:42.363327, longitude: -71.096588, info: 'Speed = 23'},
{latitude:42.363255, longitude: -71.096710, info: 'Speed = 17'}
]
%