2018年1月28日日曜日

開発環境

Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の3章(小さなツールの作成 - 1つのことだけをうまくやる)、ポケットコード(p. 105)を取り組んでみる。

ポケットコード(p. 105)

//
//  main.c
//  sample1
//
//  Created by kamimura on 2018/01/27.
//  Copyright © 2018 kamimura. All rights reserved.
//

#include <stdio.h>
#include <stdbool.h>

int main(int argc, const char * argv[]) {
    float latitude;
    float longitude;
    char info[80];
    bool started = false;
    puts("data=[");
    while(scanf("%f,%f,%79[^\n]",&latitude,&longitude,info) == 3){
        if(started) {
            printf(",\n");
        } else {
            started = true;
        }
        if (latitude < -90 || 90 < latitude) {
            printf("緯度が-90以上90以下ではない: %f\n", latitude);
            return 2;
        }
        if (longitude < -180 || 180 < longitude) {
            printf("経度が-180以上180以下ではない: %f\n", longitude);
            return 2;
        }
        printf("{latitude: %f, longi : %f, info: '%s'", latitude, longitude, info);
    }
    puts("\n]");
    return 0;
}

入出力結果(Terminal)

$ cat gpsdata.csv
 42.363400,-71.098465,Speed = 21
 42.363327,-71.097588,Speed = 23
 42.363255,-71.096710,Speed = 17
 42.363182,-71.095833,Speed = 22
 42.363110,-71.094955,Speed = 14
 42.363037,-71.094078,Speed = 16
 42.362965,-71.093201,Speed = 18
 42.362892,-71.092323,Speed = 22
 42.362820,-71.091446,Speed = 17
 42.362747,-71.090569,Speed = 23
 42.362675,-71.089691,Speed = 14
 42.362602,-71.088814,Speed = 19
 42.362530,-71.087936,Speed = 16
 42.362457,-181.087059,Speed = 16
 42.362385,-71.086182,Speed = 21$ 
$ ./ge2json < gpsdata.csv > gpsdata.json
$ echo $?
2
$ cat gpsdata.json 
data=[
{latitude: 42.363400, longi : -71.098465, info: 'Speed = 21',
{latitude: 42.363327, longi : -71.097588, info: 'Speed = 23',
{latitude: 42.363255, longi : -71.096710, info: 'Speed = 17',
{latitude: 42.363182, longi : -71.095833, info: 'Speed = 22',
{latitude: 42.363110, longi : -71.094955, info: 'Speed = 14',
{latitude: 42.363037, longi : -71.094078, info: 'Speed = 16',
{latitude: 42.362965, longi : -71.093201, info: 'Speed = 18',
{latitude: 42.362892, longi : -71.092323, info: 'Speed = 22',
{latitude: 42.362820, longi : -71.091446, info: 'Speed = 17',
{latitude: 42.362747, longi : -71.090569, info: 'Speed = 23',
{latitude: 42.362675, longi : -71.089691, info: 'Speed = 14',
{latitude: 42.362602, longi : -71.088814, info: 'Speed = 19',
{latitude: 42.362530, longi : -71.087936, info: 'Speed = 16',
経度が-180以上180以下ではない: -181.087051
$ 

0 コメント:

コメントを投稿