c读写文件与文件参数管理
2017-08-23 17:53
381 查看
直接上代码,代码简单易懂。
#include<stdio.h> #define PARAM_CONFIG "/home/lkg/test/config" typedef struct{ unsigned short int id; int offset; }param_offset; typedef struct { char c; int h; unsigned short n; char s[4]; }st; ram_offset id_offset[3] = { ▽ {1,0}, {2,8}, {3,108}, }; int param_write_cfg(st* buffer, unsigned short int param_id){ int ret, i, offset; FILE *fp; i = 0; while(id_offset && id_offset[i].id){ if(param_id == id_offset[i].id){ offset = id_offset[i].offset; break; } i++; } printf("id = %d, offset = %d\n", param_id, offset); if((fp = fopen(PARAM_CONFIG, "rb+")) == NULL) { if((fp = fopen(PARAM_CONFIG, "wb+")) == NULL) { printf("Can't open %s, program will to exit.\n", PARAM_CONFIG); return -1; } } fseek(fp, offset, SEEK_SET); fwrite(buffer, sizeof(*buffer), 1, fp); printf("st c = %d, h = %d n =%u s = %s \n",buffer->c, buffer->h,buffer->n,buffer->s); fclose(fp); return 0; } int param_read_cfg(st* buffer, unsigned short int param_id){ int ret, i, offset; FILE *fp; ~/test/param.c[+1] [c] unix utf-8 1:17/81 "param.c" 81L, 2187C written lkg@ubuntu:~/test$ gcc param.c lkg@ubuntu:~/test$ ./a.out id = 2, offset = 8 st c = 5, h = 7 n =0 s = didi id = 3, offset = 108 st c = 6, h = 2 n =0 s = dada id = 2, offset = 8 st c = 5, h = 7 n =0 s = didi id = 3, offset = 108 st c = 6, h = 2 n =0 s = dada lkg@ubuntu:~/test$ vi param.c * *读取文件指定id位置存储的结构体内容 * */ int param_read_cfg(st* buffer, unsigned short int param_id){ int ret, i, offset; FILE *fp; param_offset id_offset[3] = { {1,0}, {2,8}, {3,108}, }; i = 0; while(id_offset && id_offset[i].id){ if(param_id == id_offset[i].id){ offset = id_offset[i].offset; break; } i++; } printf("id = %d, offset = %d\n", param_id, offset); if((fp = fopen(PARAM_CONFIG, "rb+")) == NULL) { printf("Can't open %s, program will to exit.", PARAM_CONFIG); return -1; } fseek(fp, offset, SEEK_SET); fread(buffer, sizeof(*buffer), 1, fp); printf("st c = %d, h = %d n =%u s = %s \n",buffer->c, buffer->h,buffer->n,buffer->s); fclose(fp); return 0; } int main(){ // char version[] = "1.0.5"; st t; st tt = {5,7,0,"didi"}; st tt1 = {6,2,0,"dada"}; // param_write_cfg(version,1); param_write_cfg(&tt,2); param_write_cfg(&tt1,3); param_read_cfg(&t,2); param_read_cfg(&t,3); return 0; }
相关文章推荐
- 管理例程——管理初始化参数——显示参数文件
- Oracle控制文件与参数文件管理_超越OCP精通Oracle视频教程培训13
- Hadoop Configuration 管理配置文件与传递参数
- Windows 8实用窍门系列:12.windows 8的文件管理---1.File创建和String Stream Buffer方式读写
- Lucene4.2源码解析之fdt和fdx文件的读写(续)——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压
- Java学习笔记——File类文件管理及IO读写、复制操作
- oracle的启动与关闭原理-参数文件管理
- RAC 环境下参数文件(spfile)管理
- ORACLE体系结构--参数文件管理
- 《Oracle 12c 运维实战宝典》-参数文件管理与无备份坏块处理分享
- Perl 输入输出,参数给入,文件读写,文件夹操作
- tomcat配置文件参数,一机多实例管理配置.详解
- sga手动改自动,以及参数文件管理
- RAC 环境下参数文件(spfile)管理
- Java学习笔记——File类之文件管理和读写操作、下载图片
- 《Oracle 12c运维实战宝典之参数文件管理》视频讲解
- android应用面试宝典(上);公共基类管理公共头尾页;公共activity的参数问题;SQLite存数据;前提先将txt数据保存在项目的assets文件下;
- Oracle数据库中的控制文件管理以及常用参数设置
- Oracle数据库中的控制文件管理以及常用参数设置
- Java学习笔记——File类之文件管理和读写操作、下载图片