c 小工具的使用

1. 这是一个gps 数据过滤的小工具,目的是过滤到gps数据中不符合要求的数据,然后转为json 数据

需要两个小工具

bermuda.c   ------>  过滤一定范围的数据

geo2json.c   ------>  将gps 数据转换成json 格式

指的注意的是 需要在这两个文件的可执行文件中间建立连接管道

先看 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);
            }
        }
    }

    return 0;
}

再看geo2json.c 的代码

#include <stdio.h>

int main() {

    float latitude;
    float longitude;
    char info[80];
    int started = 0;

    puts("data=[");
while (scanf("%f,%f,%79[^\n]",&latitude,&longitude,info) == 3) {

        if (started) printf(",\n");
        else started = 1;

        if (latitude < -90.0 || latitude > 90.0) {
                        //  stderr 是标准错误输出,一旦发生错误,不会把错误输入到标准输出的文件中,而是输出到前台
            fprintf(stderr, "Invalid latitude: %f\n",latitude);
            return 2;
        }

        if (longitude < -180.0 || longitude > 180.0) {

            fprintf(stderr, "Invalid longitude: %f\n",longitude);
            return 2;
        }

        printf("latitude: %f, longitude : %f, info: ‘%s‘",latitude,longitude,info);

    }

    puts("\n]");

    return 0;
}

使用终端 进到 这两个文件的目录下,执行命令 编译成可执行文件

gcc bermuda.c -o bermuda
gcc geo2json.c -o geo2json

然后 建立管道 传入 数据输入文件 到处到文件中outpu.json

(./bermuda | ./geo2json) <spooky.csv> output.json

输入文件 spooky.csv 的文件内容是

30.685163,-68.137207,Type=Yeti
28.304380,-74.575195,Type=UFO
29.132971,-71.136475,Type=Ship
28.343065,-62.753906,Type=Elvis
27.868217,-68.005371,Type=Goatsucker
30.496017,-73.333740,Type=Disappearance
26.224447,-71.477051,Type=UFO
29.401320,-66.027832,Type=Ship
37.879536,-69.477539,Type=Elvis
22.705256,-68.192139,Type=Elvis
27.166695,-87.484131,Type=Elvis

最终输出文件outpu.json 的内容是

data = [
latitude: 30.685163, longitude : -68.137207, info: ‘Type=Yeti‘,
latitude: 28.304380, longitude : -74.575195, info: ‘Type=UFO‘,
latitude: 29.132971, longitude : -71.136475, info: ‘Type=Ship‘,
latitude: 27.868217, longitude : -68.005371, info: ‘Type=Goatsucker‘,
latitude: 30.496017, longitude : -73.333740, info: ‘Type=Disappearance‘,
latitude: 26.224447, longitude : -71.477051, info: ‘Type=UFO‘,
latitude: 29.401320, longitude : -66.027832, info: ‘Type=Ship‘
]
时间: 2024-08-13 15:21:26

c 小工具的使用的相关文章

大有学问的刷漆小工具

在进行装修过程中占有相当重要的一部分--刷漆,因为墙面粉刷的结果会直接影响着整个家装的质量.要做到完美粉刷墙面当然少不了我们刷漆小工具,这些工具都有哪些呢?让我们一起来看看吧. 工具之一--需用滚筒刷墙面 又称滚筒,需搭配漆盘使用的滚筒刷,由于滚面范围广,所以是最省力.省时的刷具,尤其是接上延长杆后,可轻易粉刷墙面高处或天花板,但缺点是容易产生漆料喷溅的状况,所以滚筒刷的毛不要太短,但一定要细,这样刷出来的漆膜才会手感细腻. 滚筒刷分长毛,中毛.短毛三种,其表现为滚筒刷毛的长短,而不是滚筒本身的

手把手教你做音乐播放器(八)桌面小工具(上)

第8节 桌面小工具 桌面小工具是可以放置在主界面的.快速控制应用的小助手.例如我们的音乐小工具,它可以帮助用户在桌面上就完成音乐的暂停.播放.切换等操作,而不需要启动应用本身. 在安卓系统中,我们也常常叫它App widget. 实现一个App widget要经过以下几个步骤, 创建一个App widget类,让它继承自AppWidgetProvider,例如AnddleMusicAppWidget类: 放在res\layout目录下,为App widget的界面定义一个布局,例如anddle_

这些小工具让你的Android 开发更高效

在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vysor Vysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用. Vector Asset Android Studio 在1.4 支持了VectorAsset,所谓VectorAsset:它可以帮助你在Android 项目中添加Materia

原创SQlServer数据库生成简单的说明文档小工具(附源码)

这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术说明文档. 技术上主要采用的 C#+Dapper+Npod ,开发工具为Vs2015,基于Net4.5框架. 实现思路: 1.首先获取数据库的字符串,测试链接是否成功, 2.通过脚本获取该服务器的数据库列表. 3.根据数据库找到该数据库的所有数据表 4.通过脚本找到该数据表所有的字段信息 5.使用N

Java正则表达式——测试正则表达式的一个小工具

正则表达式是一种强大而灵活的文本处理工具.使用它我们能以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索.一旦找到了匹配这些模式的部分,你就能够随心所欲地对它们进行处理. 关于正则表达式的语法,网上对此有介绍的文章实在是多不胜数,实在找不到,还可以查看Java的API文档,就不多介绍了.这里主要介绍一个可以测试正则表达式的小工具.直接上代码: 1 package com.test.stringregex; 2 //{Args: abcabcabcdefabc "abc+" &q

JSON格式化着色小工具

在我们系统开发过程中越来越多的使用JSON作为数据交换的载体.JSON的特点是层次结构简洁清晰,易于人阅读和编写.同时也易于机器解析和生成.对于机器解析和生成这点本人表示认可,然而对于易于人阅读和编写可以通过下面一段JSON字符串来验证下: {"strValue":"here is str value","nullValue":null,"intvalue":999,"doublevalue":999,&q

强大的pdf文件操作小工具——PDFtk的小白用法

前言 作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件.软件问题.曾经被一技术小白同事问到有没有什么办法合并pdf文件,当时自己也是一头雾水,因为自己工作生活很少会去操作pdf文件,而当时公司对开发人员的电脑权限管理很严格,不论是上网还是安装软件,都受到很大限制,最后硬着头皮忙活了一阵子也没在解决. 前两天在写批处理程序的时候,发现批处理程序是有合并文件的命令的,我忽然想起之前这个同事的问题,就试了一下合并pdf,然而并不行.虽然失落了一下,但本着学习的精神还是百度了一下关

几个常用文本处理小工具tr ,wc,cut,sort,uniq用法详解

几个文本处理的小工具:tr ,wc,cut,sort,uniq 1. tr命令可以对来自标准输入的字符进行替换.压缩和删除.它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大. 语法:tr 选项  SET1 SET2 -c或--complerment:取代所有不属于第一字符集的字符(就是补集): -d或--delete:删除所有属于第一字符集的字符: -s或--squeeze-repeats:把连续重复的字符以单独一个字符表示: -t或--truncate-set1:先删除第

Android Studio添加Parcelable序列化小工具(快速提高开发效率)

Android Studio添加Parcelable序列化小工具(快速提高开发效率) Android Studio是google专门为开发Android提供的开发工具,在它内部可以直接的添加一些非常好用的开发小工具,这里就讲解怎样添加这些小工具,并且向大家推荐一个非常有用的对象传递时,必须要把对象序列化的接口Parcelable小工具; 这里先介绍下 Android中实现序列化的两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是An

axis2 利用小工具cat.aar

Axis2: Web Service是现在最适合实现SOAP的技术,而Axis2是实现Web Service的一种技术框架(架构). 昨天把把菜刀脚本打包发现<>在xml会被转义,导致菜刀客户端无法连接.看起来别人可以修改response类型,但是我没成功.利用之前发的Cat小工具打包成aar就可以玩了. axis2管理登陆默认配置了用户名为admin,密码axis2: axis2管理后台: 想要deploy 自己的应用需要先打成对应的aar.jar包.用eclipse安装axis2插件. S