c 小工具的使用
1. 这是一个gps 数据过滤的小工具,目的是过滤到gps数据中不符合要求的数据,然后转为json 数据
需要两个小工具
bermuda.c ------> 过滤一定范围的数据
geo2json.c ------> 将gps 数据转换成json 格式
指的注意的是 需要在这两个文件的可执行文件中间建立连接管道
先看 bermuda.c 的代码
#include <stdio.h>
int main() {
float latitude;
float longitude;
char info[];
while (scanf("%f,%f,%79[^\n]",&latitude,&longitude,info) == ) {
if (latitude > && latitude < ) {
if (longitude > - && longitude < -) {
printf("%f,%f,%s\n",latitude,longitude,info);
}
}
}
return ;
}
再看geo2json.c 的代码
#include <stdio.h>
int main() {
float latitude;
float longitude;
char info[];
int started = ;
puts("data=[");
while (scanf("%f,%f,%79[^\n]",&latitude,&longitude,info) == ) {
if (started) printf(",\n");
else started = ;
if (latitude < -90.0 || latitude > 90.0) {
// stderr 是标准错误输出,一旦发生错误,不会把错误输入到标准输出的文件中,而是输出到前台
fprintf(stderr, "Invalid latitude: %f\n",latitude);
return ;
}
if (longitude < -180.0 || longitude > 180.0) {
fprintf(stderr, "Invalid longitude: %f\n",longitude);
return ;
}
printf("latitude: %f, longitude : %f, info: '%s'",latitude,longitude,info);
}
puts("\n]");
return ;
}
使用终端 进到 这两个文件的目录下,执行命令 编译成可执行文件
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'
]
2. 这是对文件的操作 ,读取文件中的数据,然后根据条件 把符合条件的内容导入到相应的文件中
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(int argc , char *argv[]) { char line[];
if (argc != ) { fprintf(stderr, "你必须输入5个参数!");
}
FILE *in = fopen("spooky.csv", "r"); FILE *file1 = fopen(argv[], "w");
FILE *file2 = fopen(argv[], "w");
FILE *file3 = fopen(argv[], "w"); while (fscanf(in, "%79[^\n]\n",line) == ) { if (strstr(line, argv[])) { fprintf(file1, "%s\n",line);
}
else if (strstr(line, argv[])) { fprintf(file2, "%s\n",line);
}
else { fprintf(file3, "%s\n",line);
}
} fclose(file1);
fclose(file2);
fclose(file3); return ;
}
把spooky.csv 和 本代码放到同一目录,然后运行命令
gcc categorize.c -o categorize
编译成功后 在运行命令
./categorize Ship ship.csv Elvis elvis.csv other.csv
就会得到三个文件,分别记录着Ship Elvis 和 其他的信息,

这里使用了命令行参数的功能,用户可以根据一定的规则来动态帅选内容
必须说明的是 main 函数中的参数是很有用的
c 小工具的使用的更多相关文章
- 2000条你应知的WPF小姿势 基础篇<45-50 Visual Tree&Logic Tree 附带两个小工具>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...
- 【原】得心应手小工具开发——IE代理快速切换工具
一.引入 因为公司里上外网要经常换IE代理地址,每次切换地址都要进到Internet Options里去设置一番,经常切换的话很是麻烦,由于用了点时间作个小工具来方便自己. 二.实现思路 其实思路很简 ...
- ContentProvider域名替换小工具
开发项目域名想怎么换就怎么换,就是这么任性! 这是一个很有意思的小工具! 这是一个方便开发人员和测试人员的小工具!! 吐槽: 一直在做Android开发,一直总有一个问题存在:做自己公司的apk开发时 ...
- 偷懒小工具 - SSO单点登录通用类(可跨域)
写在前面的话 上次发布过一篇同样标题的文章.但是因为跨域方面做得不太理想.我进行了修改,并重新分享给大家. 如果这篇文章对您有所帮助,请您点击一下推荐.以便有动力分享出更多的"偷懒小工具&q ...
- [原创] Delphi小工具(Windows资源管理器右键菜单扩展)
两个小工具 1. 项目临时文件清理 2. Android Ndk 编译 c/c++ jni 源码工具. 下载后,点击Reg.bat就可以完成注册安装.不需要时点击 UnReg.Bat 就可以删除菜单. ...
- 介绍两个Ubuntu上的桌面小工具
经常使用Windows10,Sticky Notes和壁纸自动切换功能挺好用的.我经常会使用Sticky Notes来记录一些信息,内容是实时保存的,而且启动的时候会自动显示在桌面上.其实Ubuntu ...
- WPF根据Oracle数据库的表,生成CS文件小工具
开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...
- WPF开发查询加班小工具
先说一下,我们公司是六点下班,超过7点开始算加班,但是加班的时间是从六点开始计算,以0.5个小时为计数,就是你到了六点半,不算加班半小时,但是加班到七点半,就是加班了一个半小时. 一.打卡记录 首先, ...
- 写个C#命令行参数解析的小工具
最近测试工作做的比较多因此时常要创建一些控制台类型的应用程序.因为程序有不同的参数开关,需要在程序启动的时候通过命令行来给程序传递各种开关和参数.直接操作args有些不方便,所以就写了个解析参数的小工 ...
随机推荐
- Fis3的前端模块化之路[基础篇]
Fis3版本:v3.4.22 fis3是一个构建工具 解决前端开发中自动化工具.性能优化.模块化框架.开发规范.代码部署.开发流程等问题. 安装 npm install -g fis3 运行 fis3 ...
- 阿里巴巴直播内容风险防控中的AI力量
直播作为近来新兴的互动形态和今年阿里巴巴双十一的一大亮点,其内容风险监控是一个全新的课题,技术的挑战非常大,管控难点主要包括业界缺乏成熟方案和标准.主播行为.直播内容不可控.峰值期间数千路高并发处理. ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- 微软.NET Core RC2正式发布,横跨所有平台
.NET官方博客宣布了<Announcing .NET Core RC2 and .NET Core SDK Preview 1>,正式如期发布了.NET Core RC2, 现在可以放心 ...
- 一步步开发自己的博客 .NET版(10、前端对话框和消息框的实现)
关于前端对话框.消息框的优秀插件多不胜数.造轮子是为了更好的使用轮子,并不是说自己造的轮子肯定好.所以,这个博客系统基本上都是自己实现的,包括日志记录.响应式布局.评论功能等等一些本可以使用插件的.好 ...
- 使用JSONObject.fromObject的时候出现“There is a cycle in the hierarchy”异常 的解决办法
在使用JSONObject.fromObject的时候,出现“There is a cycle in the hierarchy”异常. 意思是出现了死循环,也就是Model之间有循环包含关系: ...
- scrapy 知乎用户信息爬虫
zhihu_spider 此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo,下载这些数据感觉也没什么用,就当为大家学习scrapy提供一个例子吧.代码地 ...
- 两个 viewports 的故事-第二部分
原文链接:A tale of two viewports — part two 译者:nzbin 在这个迷你系列中,我将解释 viewports 和各种重要元素的宽度是如何工作的,比如说 <ht ...
- Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
目录: 前序 效果图 简介 全部代码 前序: 接触 golang 不久,一直是边学边做,边总结,深深感到这门语言的魅力,等下要跟大家分享是最近项目 服务端 用到的图片压缩程序,我单独分离了出来,做成了 ...
- 【C#附源码】数据库文档生成工具支持(Excel+Html)
[2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...