【原创】C语言处理文件数据(5)
来源:互联网 发布:实时电脑远程软件 编辑:程序博客网 时间:2024/06/06 03:26
【原创】C语言处理文件数据(5)
原数据文件1格式
11111......
原数据文件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’,如果不做处理,结果文件格式会有问题。
原文链接
http://blog.csdn.net/geng823/article/details/45221877
0 0
- 【原创】C语言处理文件数据(5)
- 【原创】C语言处理文件数据(1)
- 【原创】C语言处理文件数据(2)
- 【原创】C语言处理文件数据(3)
- 【原创】C语言处理文件数据(4)
- C语言处理文件中数据
- 文件处理(C语言)
- C语言文件处理
- C语言:文件处理
- C语言"文件处理"
- C语言文件处理
- C语言(内存管理、文件处理)
- C语言“文件包含”处理
- C语言的文件处理
- C语言文件包含处理
- C语言文件处理总结
- 笔记:C语言文件处理
- 【C】C语言处理文件读写
- Android中Parcelable接口用法
- Android通过adb启动应用
- 四、文本和输出
- Generic Programming and the STL笔记6--Function Object Classes
- DBUtils学习总结
- 【原创】C语言处理文件数据(5)
- Android 单个Activity后台运行,及Activity隐藏但是不调用OnDestory方法
- "Command /usr/bin/codesign failed with exit code 1",真机调试出错解决办法
- iOS 实现一个类似电商购物车界面示例
- 浅谈java 中构建可执行 jar 包的几种方式
- 这两年的工作总结
- seven叶项目总结02
- Hibernate复习笔记(一)---环境搭建及第一个HelloWorld程序的实现
- 健美裤或喇叭裤