实现常用的配置文件/初始化文件读取的一个C程序
来源:互联网 发布:ledv3.zh3软件 编辑:程序博客网 时间:2024/06/07 01:36
在编程中,我们经常会遇到一些配置文件或初始化文件。这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开。里面会存储一些程序参数,在程序中直接读取使用。例如,计算机与服务器通信,服务器的ip地址,段口号可以存储于ini文件中。这样如果我想换另外一台服务器时,直接将ini文件中的ip地址改变即可,程序源代码不需要做任何修改。
本文将分享一段常用代码,用于读取配置文件中的信息。本文中的代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题。具体操作如下:
1. 首先用记事本创建一个config.ini文件(文件名可以随便取),并假设该文件是我们要读取的配置文件。文件内容如下:
information1: 1234567890information2: this is test informationinformation3: `~!@#$%^&*()_+{}-[]\|:"/.,<>
假设我们读取的初始化文件每一行都是 <属性名称>: <属性值> 的格式。在上述例子中,文件共有三行,分别代表三个属性的信息。
2. 然后就是我们的代码文件了,如下(将以下代码存在ReadFile.cpp中):
#include <string.h>#include <stdio.h>const size_t MAX_LEN = 128;typedef struct{ char firstline[MAX_LEN]; char secondline[MAX_LEN]; char thirdline[MAX_LEN];} Data;void readfile(Data *d){ const char *FileName = "config.ini"; char LineBuf[MAX_LEN]={0}; FILE *configFile = fopen(FileName, "r"); memset(d,0,sizeof(Data)); while(NULL != fgets(LineBuf, sizeof(LineBuf), configFile)) { size_t bufLen = strlen(LineBuf); if('\r' == LineBuf[bufLen-1] || '\n' == LineBuf[bufLen-1]) { LineBuf[bufLen-1] = '\0'; } char *pos = strchr(LineBuf,':'); if(NULL != pos) { *pos = '\0'; pos++; if(0 == strcmp(LineBuf, "information1")) { for(; *pos == ' '; pos++){} strcpy(d->firstline, pos); } else if(0 == strcmp(LineBuf, "information2")) { for(; *pos == ' '; pos++){} strcpy(d->secondline, pos); } else if(0 == strcmp(LineBuf, "information3")) { for(; *pos == ' '; pos++){} strcpy(d->thirdline, pos); } else { printf("Failed to read information from the file."); break; } } } fclose(configFile); configFile = NULL; return;}int main(int argc, char *argv[]){ Data *d = new Data; readfile(d); printf("d->firstline is \"%s\"\n", d->firstline); printf("d->secondline is \"%s\"\n", d->secondline); printf("d->thirdline is \"%s\"\n", d->thirdline); delete d; return 0;}
其中,struct Data是用于存储要读取的信息的结构体,readfile函数也就是实现我们读取功能的函数,其中的值均存在struct Data中。最后我们写了一个简单的main函数用来测试结果。需要注意的是,在struct Data中,我们设置了char数组长度,最大不超过128。因此如果要读取的信息超过128字节可能会出错。如果有需要读取更长的话可以将MAX_LEN设置为一个更大的值。
3. 最后就是我们的调试结果了,在命令行中运行如下命令
$ g++ -o test.out ReadFile.cpp$ ./test.out
然后就是运行结果:
d->firstline is "1234567890"d->secondline is "this is test information"d->thirdline is "`!@#$%^&*()_+{}-[]\|:"/.,<>"
这种读取文件的代码应该非常常用,要掌握。
0 0
- 实现常用的配置文件/初始化文件读取的一个C程序
- 一个简单的读取bmp文件的程序(c)
- 分享一个linux下的C程序读取配置文件的方法
- c/c++: 读取配置文件(文本)内容的简单实现
- 读取配置文件的java程序
- 一个不错读取Configuration文件的类,方便设置配置文件
- Linux下程序启动之后的初始化---检查配置文件及读取日志配置项的值
- 读取到配置文件的C语言的接口实现
- 读取到配置文件的C语言的接口实现
- 在linux中用C程序实现读取一个文件中的字符,计算它的个数,并把个数显示在另外一个文件夹内
- Winform(C#)实现XML文件的读取
- 分批读取文件中数据的程序流程及其C代码实现
- C写的一个读取BIOS时间的程序
- 用C写的一个读取BIOS时间的程序
- 怎么用c语言实现读取一个txt文件里的数据 要按行读出来
- c#读取配置文件 程序的App.config
- 一个读取INI配置文件的类
- 配置文件的读取,纯C代码
- windows jekyll安装和配置
- pinax建项目
- ubuntu下安装fcitx 中文输入法
- 发布iOS应用xcode到App Store(苹果商店) 详细解析 http://www.itjhwd.com/postappstorexjjx/
- session如何保存在专门的StateServer服务器中
- 实现常用的配置文件/初始化文件读取的一个C程序
- emctl start dbconsole遇到错误:OC4J Configuration issue
- 一个用JAVA实现的线段树类--泛型 重构.
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
- hdu 4620 Fruit Ninja Extreme
- c语言字符串 数字转换函数大全
- 关于骨骼动画及微软示例Skinned Mesh的解析
- Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux
- 用Windows Storage Server 2008做iSCSI存储服务器