開発環境
- OS: macOS High Sierra - Apple
- Text Editor: Emacs
- コンパイラー: LLVM/Clang, GCC(gcc)
- プログラミング言語: C
Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の3章(小さなツールの作成 - 1つのことだけをうまくやる)、エクササイズ(p. 115)を取り組んでみる。
エクササイズ(p. 115)
Makefile
CC = cc all: sample run sample: sample.c $(CC) sample.c -o sample run: sample gpsdata.csv ./sample < gpsdata.csv
コード
#include <stdbool.h> #include <stdio.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; } if (latitude < -90 || 90 < latitude) { printf("Invalid latitude: %f\n", latitude); return 2; } if (longitude < -180 || 180 < longitude) { printf("Inavlid longitude: %f\n", longitude); return 2; } printf("{latitude: %f, longitude: %f, info: %s}", latitude, longitude, info); } puts("\n]"); }
入出力結果(Terminal)
$ make cc sample.c -o sample ./sample < gpsdata.csv data=[ {latitude: 42.363400, longitude: -71.098465, info: Speed = 21}, {latitude: 42.363327, longitude: -71.097588, info: Speed = 23}, {latitude: 42.363255, longitude: -71.096710, info: Speed = 17}, {latitude: 42.363182, longitude: -71.095833, info: Speed = 22}, {latitude: 42.363110, longitude: -71.094955, info: Speed = 14}, {latitude: 42.363037, longitude: -71.094078, info: Speed = 16}, {latitude: 42.362965, longitude: -71.093201, info: Speed = 18}, {latitude: 42.362892, longitude: -71.092323, info: Speed = 22}, {latitude: 42.362820, longitude: -71.091446, info: Speed = 17}, {latitude: 42.362747, longitude: -71.090569, info: Speed = 23}, {latitude: 42.362675, longitude: -71.089691, info: Speed = 14}, {latitude: 42.362602, longitude: -71.088814, info: Speed = 19}, {latitude: 42.362530, longitude: -71.087936, info: Speed = 16}, {latitude: 42.362457, longitude: -71.087059, info: Speed = 16}, {latitude: 42.362385, longitude: -71.086182, info: Speed = 21} ] $ echo $? 0 $ ./sample < gpsdata1.csv data=[ {latitude: 42.363400, longitude: -71.098465, info: Speed = 21}, {latitude: 42.363327, longitude: -71.097588, info: Speed = 23}, {latitude: 42.363255, longitude: -71.096710, info: Speed = 17}, {latitude: 42.363182, longitude: -71.095833, info: Speed = 22}, {latitude: 42.363110, longitude: -71.094955, info: Speed = 14}, {latitude: 42.363037, longitude: -71.094078, info: Speed = 16}, {latitude: 42.362965, longitude: -71.093201, info: Speed = 18}, {latitude: 42.362892, longitude: -71.092323, info: Speed = 22}, Invalid latitude: -90.362823 $ echo $? 2 $ ./sample < gpsdata2.csv data=[ {latitude: 42.363400, longitude: -71.098465, info: Speed = 21}, {latitude: 42.363327, longitude: -71.097588, info: Speed = 23}, {latitude: 42.363255, longitude: -71.096710, info: Speed = 17}, {latitude: 42.363182, longitude: -71.095833, info: Speed = 22}, {latitude: 42.363110, longitude: -71.094955, info: Speed = 14}, {latitude: 42.363037, longitude: -71.094078, info: Speed = 16}, Inavlid longitude: -180.093201 $ echo $? 2 $
0 コメント:
コメントを投稿