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

需要两个小工具

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

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

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

先看 bermuda.c 的代码

  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. float latitude;
  6. float longitude;
  7. char info[];
  8.  
  9. while (scanf("%f,%f,%79[^\n]",&latitude,&longitude,info) == ) {
  10.  
  11. if (latitude > && latitude < ) {
  12.  
  13. if (longitude > - && longitude < -) {
  14.  
  15. printf("%f,%f,%s\n",latitude,longitude,info);
  16. }
  17. }
  18. }
  19.  
  20. return ;
  21. }

再看geo2json.c 的代码

  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. float latitude;
  6. float longitude;
  7. char info[];
  8. int started = ;
  9.  
  10.     puts("data=[");
  1. while (scanf("%f,%f,%79[^\n]",&latitude,&longitude,info) == ) {
  2.  
  3. if (started) printf(",\n");
  4. else started = ;
  5.  
  6. if (latitude < -90.0 || latitude > 90.0) {

  7. // stderr 是标准错误输出,一旦发生错误,不会把错误输入到标准输出的文件中,而是输出到前台
  8. fprintf(stderr, "Invalid latitude: %f\n",latitude);
  9. return ;
  10. }
  11.  
  12. if (longitude < -180.0 || longitude > 180.0) {
  13.  
  14. fprintf(stderr, "Invalid longitude: %f\n",longitude);
  15. return ;
  16. }
  17.  
  18. printf("latitude: %f, longitude : %f, info: '%s'",latitude,longitude,info);
  19.  
  20. }
  21.  
  22. puts("\n]");
  23.  
  24. return ;
  25. }

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

  1. gcc bermuda.c -o bermuda
  2. gcc geo2json.c -o geo2json

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

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

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

  1. 30.685163,-68.137207,Type=Yeti
  2. 28.304380,-74.575195,Type=UFO
  3. 29.132971,-71.136475,Type=Ship
  4. 28.343065,-62.753906,Type=Elvis
  5. 27.868217,-68.005371,Type=Goatsucker
  6. 30.496017,-73.333740,Type=Disappearance
  7. 26.224447,-71.477051,Type=UFO
  8. 29.401320,-66.027832,Type=Ship
  9. 37.879536,-69.477539,Type=Elvis
  10. 22.705256,-68.192139,Type=Elvis
  11. 27.166695,-87.484131,Type=Elvis

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

  1. data = [
  2. latitude: 30.685163, longitude : -68.137207, info: 'Type=Yeti',
  3. latitude: 28.304380, longitude : -74.575195, info: 'Type=UFO',
  4. latitude: 29.132971, longitude : -71.136475, info: 'Type=Ship',
  5. latitude: 27.868217, longitude : -68.005371, info: 'Type=Goatsucker',
  6. latitude: 30.496017, longitude : -73.333740, info: 'Type=Disappearance',
  7. latitude: 26.224447, longitude : -71.477051, info: 'Type=UFO',
  8. latitude: 29.401320, longitude : -66.027832, info: 'Type=Ship'
  9. ]

2. 这是对文件的操作 ,读取文件中的数据,然后根据条件 把符合条件的内容导入到相应的文件中

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(int argc , char *argv[]) {
  6.  
  7. char line[];
  8. if (argc != ) {
  9.  
  10. fprintf(stderr, "你必须输入5个参数!");
  11. }
  12. FILE *in = fopen("spooky.csv", "r");
  13.  
  14. FILE *file1 = fopen(argv[], "w");
  15. FILE *file2 = fopen(argv[], "w");
  16. FILE *file3 = fopen(argv[], "w");
  17.  
  18. while (fscanf(in, "%79[^\n]\n",line) == ) {
  19.  
  20. if (strstr(line, argv[])) {
  21.  
  22. fprintf(file1, "%s\n",line);
  23. }
  24. else if (strstr(line, argv[])) {
  25.  
  26. fprintf(file2, "%s\n",line);
  27. }
  28. else {
  29.  
  30. fprintf(file3, "%s\n",line);
  31. }
  32. }
  33.  
  34. fclose(file1);
  35. fclose(file2);
  36. fclose(file3);
  37.  
  38. return ;
  39. }

把spooky.csv 和 本代码放到同一目录,然后运行命令

  1. gcc categorize.c -o categorize

编译成功后 在运行命令

  1. ./categorize Ship ship.csv Elvis elvis.csv other.csv

就会得到三个文件,分别记录着Ship Elvis 和 其他的信息,

这里使用了命令行参数的功能,用户可以根据一定的规则来动态帅选内容

必须说明的是 main 函数中的参数是很有用的

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

  1. 2000条你应知的WPF小姿势 基础篇<45-50 Visual Tree&Logic Tree 附带两个小工具>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...

  2. 【原】得心应手小工具开发——IE代理快速切换工具

    一.引入 因为公司里上外网要经常换IE代理地址,每次切换地址都要进到Internet Options里去设置一番,经常切换的话很是麻烦,由于用了点时间作个小工具来方便自己. 二.实现思路 其实思路很简 ...

  3. ContentProvider域名替换小工具

    开发项目域名想怎么换就怎么换,就是这么任性! 这是一个很有意思的小工具! 这是一个方便开发人员和测试人员的小工具!! 吐槽: 一直在做Android开发,一直总有一个问题存在:做自己公司的apk开发时 ...

  4. 偷懒小工具 - SSO单点登录通用类(可跨域)

    写在前面的话 上次发布过一篇同样标题的文章.但是因为跨域方面做得不太理想.我进行了修改,并重新分享给大家. 如果这篇文章对您有所帮助,请您点击一下推荐.以便有动力分享出更多的"偷懒小工具&q ...

  5. [原创] Delphi小工具(Windows资源管理器右键菜单扩展)

    两个小工具 1. 项目临时文件清理 2. Android Ndk 编译 c/c++ jni 源码工具. 下载后,点击Reg.bat就可以完成注册安装.不需要时点击 UnReg.Bat 就可以删除菜单. ...

  6. 介绍两个Ubuntu上的桌面小工具

    经常使用Windows10,Sticky Notes和壁纸自动切换功能挺好用的.我经常会使用Sticky Notes来记录一些信息,内容是实时保存的,而且启动的时候会自动显示在桌面上.其实Ubuntu ...

  7. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

  8. WPF开发查询加班小工具

    先说一下,我们公司是六点下班,超过7点开始算加班,但是加班的时间是从六点开始计算,以0.5个小时为计数,就是你到了六点半,不算加班半小时,但是加班到七点半,就是加班了一个半小时. 一.打卡记录 首先, ...

  9. 写个C#命令行参数解析的小工具

    最近测试工作做的比较多因此时常要创建一些控制台类型的应用程序.因为程序有不同的参数开关,需要在程序启动的时候通过命令行来给程序传递各种开关和参数.直接操作args有些不方便,所以就写了个解析参数的小工 ...

随机推荐

  1. Win10 IIS本地部署网站运行时图片和样式不正常?

    后期会在博客首发更新:http://dnt.dkill.net 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 启用关闭win功 ...

  2. 使用C/C++写Python模块

    最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...

  3. 【转】java通用URL接口地址调用方式GET和POST方式

    java通用URL接口地址调用方式GET和POST方式,包括建立请求和设置请求头部信息等等......... import java.io.ByteArrayOutputStream; import ...

  4. Java开发中的23种设计模式详解

    [放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...

  5. 打破陈规抓痛点,H3 BPM10.0挑战不可能

    高效益意味着相似的运营活动比竞争对手做得更好,而战略定位则意味着企业在运营活动中有区别于竞争对手的实施方式,即差异化竞争.在新经济体下,面对社会的变革.市场的竞争环境.不断攀升的成本压力,几乎没有企业 ...

  6. ios 获取或修改网页上的内容

    UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌     入页面中,通过这个方法我们可 ...

  7. git

    CMD命令:git initgit add . [添加文件至暂存区]git commit -m '描述性语句 随意写即可'git branch gh-pages [创建仓库分支]git checkou ...

  8. 如何开启MySQL 5.7.12 的二进制日志

    1. 打开/etc下的my.cnf文件 2. 编辑它,添加内容: log_bin=binary-log   #二进制日志的文件名 server_id=1  #必须指定server_id,这是MySQL ...

  9. [LeetCode] Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子字符串

    Find the length of the longest substring T of a given string (consists of lowercase letters only) su ...

  10. ASP.NET MVC防范CSRF最佳实践

    XSS与CSRF 哈哈,有点标题党,但我保证这篇文章跟别的不太一样. 我认为,网站安全的基础有三块: 防范中间人攻击 防范XSS 防范CSRF 注意,我讲的是基础,如果更高级点的话可以考虑防范机器人刷 ...