【原创】C语言处理文件数据(5) 分类: Linux --- C 2015-04-23 15:02 40人阅读 评论(0) 收藏
2015-04-23 15:02
639 查看
【原创】C语言处理文件数据(5)
原数据文件1格式1 1 1 1 1 ... ...
原数据文件2格式
1 3:1 10:1 12:8 17:1 23:8 27:1 29:6 30:7 33:10 42:12 ... 2 7:1 12:2 29:4 30:1 33:1 48:1 51:2 73:1 83:3 160:2 ... 3 12:3 16:1 23:3 25:1 27:1 29:8 30:5 33:14 42:5 51:1 ... 4 10:1 12:20 16:1 17:10 23:25 25:1 27:3 29:40 30:16 ... 5 12:3 16:1 23:8 29:12 30:8 31:1 33:8 41:3 42:5 51:2 ... ... ...
处理后数据文件格式
1 3:1 10:1 12:8 17:1 23:8 27:1 29:6 30:7 33:10 42:12 ... 1 7:1 12:2 29:4 30:1 33:1 48:1 51:2 73:1 83:3 160:2 ... 1 12:3 16:1 23:3 25:1 27:1 29:8 30:5 33:14 42:5 51:1 ... 1 10:1 12:20 16:1 17:10 23:25 25:1 27:3 29:40 30:16 ... 1 12:3 16:1 23:8 29:12 30:8 31:1 33:8 41:3 42:5 51:2 ... ... ...
要求:
从处理后的文件格式可以看出,要做的是,在文件2的基础上,用文件1的第一列替换掉文件2的第一列,得到需要的文件。
具体使用方法和源代码如下:
/************************************************************************* > File Name: data_fusion.c > Author: genglut > Mail: genglut@163.com > Created Time: 2015年04月22日 星期三 21时36分16秒 ************************************************************************/ //要把程序放在data这个文件夹中,编译后运行 //具体用法如下 /* [genglut@localhost data_fusion]$ gcc data_fusion.c -o data_fusion [genglut@localhost data_fusion]$ ./data_fusion test.label test test_result 把test.label test替换成对应的文件即可处理其他类似数据 */ #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { FILE *filesrc_1, *filesrc_2, *filedest_result; char ch; if(4 != argc)//判断函数参数 { printf("usage:\n./command filesrc_1 filesrc_2 filedest_result\n"); printf("如:\n./command test.label test test_result\n"); return -1; } if((filesrc_1 = fopen(argv[1], "r")) == NULL)//filesrc_1为原数据文件1,例如test.label { perror("fopen"); exit(EXIT_FAILURE); } if((filesrc_2 = fopen(argv[2], "r")) == NULL)//filesrc_2为原数据文件2,例如test { perror("fopen"); exit(EXIT_FAILURE); } if((filedest_result = fopen(argv[3], "w")) == NULL) //filedest_result为处理后的最终数据结果文件,自己定义名字 { perror("fopen"); exit(EXIT_FAILURE); } while(!feof(filesrc_1)&&!feof(filesrc_2)) { while (((ch = fgetc(filesrc_1)) != '\n'))//判断是否读到了行末尾 { if(ch == EOF)//非常关键的一行代码!!!判断行的末尾字符是不是文件结束符EOF,如果没有这步判断,则无法跳出循环,即进入死循环。 { break;//如果是EOF,则跳出while循环 } if((ch != '\r') && (ch != '\n'))//判断是否为回车符和换行符 fputc(ch, filedest_result); } while ((ch = fgetc(filesrc_2)) != ' ')//判断是否读到了空格 { if(ch == EOF)//非常关键的一行代码!!!判断行的末尾字符是不是文件结束符EOF,如果没有这步判断,则无法跳出循环,即进入死循环。 { break;//如果是EOF,则跳出while循环 } } fputc(' ', filedest_result);//添加空格 while (((ch = fgetc(filesrc_2)) != '\n'))//判断是否读到了行末尾 { if(ch == EOF)//非常关键的一行代码!!!判断行的末尾字符是不是文件结束符EOF,如果没有这步判断,则无法跳出循环,即进入死循环。 { break;//如果是EOF,则跳出while循环 } if((ch != '\r') && (ch != '\n'))//判断是否为回车符和换行符 fputc(ch, filedest_result); } fputc('\n', filedest_result);//添加换行符 } return 0; }
代码行
if((ch != '\r') && (ch != '\n'))//判断是否为回车符和换行符
用来解决windows下回车换行符号”\r\n”的问题。因为Linux下换行符为’\n’,如果不做处理,结果文件格式会有问题。
原文链接
/article/1574903.html
相关文章推荐
- 【原创】C语言处理文件数据(3) 分类: Linux --- C 2014-11-04 10:13 74人阅读 评论(0) 收藏
- 【原创】C语言处理文件数据(4) 分类: Linux --- C 2014-11-06 11:15 87人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - Linux常见信号及处理 分类: Linux --- 应用程序设计 2014-11-08 11:54 68人阅读 评论(0) 收藏
- 【原创】有规律的文件数据处理函数 - printf和scanf、fscanf和fprintf、sscanf和sprintf 分类: Linux --- C 2014-11-11 18:33 84人阅读 评论(0) 收藏
- 【转载】fscanf和fprintf函数从文件中格式化读取double型数据 分类: Linux --- C 2014-11-11 18:45 98人阅读 评论(0) 收藏
- 【转载】linux中误删除oracle数据文件的恢复操作 分类: H2_ORACLE 2013-06-14 12:07 353人阅读 评论(0) 收藏
- 嵌入式Linux中断处理程序架构 分类: linux_内核_中断 2013-07-11 09:24 202人阅读 评论(0) 收藏
- ubuntu11.04启动 及虚拟文件系统 分类: arm-linux-Ubuntu 2013-07-22 16:28 369人阅读 评论(0) 收藏
- JFFS2 文件系统及新特性介绍 分类: arm-linux-Ubuntu 2013-07-22 16:30 269人阅读 评论(0) 收藏
- 如何在WDM中使用xp系统的DMA用来处理数据 分类: windows驱动程序WDM 浅谈PCI 2013-07-26 14:57 497人阅读 评论(0) 收藏
- 从PCI上读取数据 线程和定时器效率 分类: 浅谈PCI arm-linux-Ubuntu 2013-08-07 08:18 740人阅读 评论(0) 收藏
- 线程同步(信号量,互斥,条件变量) 分类: linux应用程序 2008-04-08 09:43 2587人阅读 评论(1) 收藏 举报 进行多线程编程,最头疼的就是那些共享的数据。因为你无法知道哪个线程会在哪个时候对它进行操作,你也无法
- UNIX文件结构(转自UNIX/AIX操作系统基础教程) 分类: B3_LINUX 2012-10-16 22:52 781人阅读 评论(0) 收藏
- 使用C语言读取properties文件V1.0 分类: H_HISTORY 2013-02-26 12:37 946人阅读 评论(0) 收藏
- 【原创】VMware虚拟机出现内部错误时解决方法 分类: Linux --- 综合 2014-11-05 11:02 74人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 管道 分类: Linux --- 应用程序设计 2014-11-05 11:18 75人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 安装信号与捕捉信号 分类: Linux --- 应用程序设计 2014-11-08 13:00 49人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号集与屏蔽信号 分类: Linux --- 应用程序设计 2014-11-08 13:19 53人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 等待信号 分类: Linux --- 应用程序设计 2014-11-09 11:25 50人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 信号应用实例 分类: Linux --- 应用程序设计 2014-11-09 11:33 66人阅读 评论(0) 收藏