首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
安全知识 :: 专题文章

利用GetPrivateProfileString读取配置文件(.ini)


http://www.gipsky.com/
配置文件中经常用到ini文件,在VC中其函数分别为:



写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);



读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);



读取整形值:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);



其中个参数的意思:



LPCTSTR lpAppName ------- INI文件中的一个字段名



LPCTSTR lpKeyName -------- lpAppName 下的一个键名,也就是里面具体的变量名



LPCTSTR lpString ---------是键值,也就是变量的值, 必须为LPCTSTR或CString类型



LPCTSTR lpFileName --------完整的INI文件路径名



LPCTSTR lpDefaut ----------假如没有其前两个参数值,则将此值赋给变量



LPSTR lpReturnedString --------接收INI文件中的值的CString对象,即接收缓冲区



DWORD nSize ------接收缓冲区的大小



例子:



CString StrName,Strtemp;



int nAge;



StrName = "jacky";



nAge = 13;



WritePrivateProfileString("Student","Name",StrName,"c:\\setting.ini");



结果:(INI文件中显示如下:)



[Student]



Name=jacky



读取:



CString SName;



GetPrivateProfileString("Student","Name","DefaultName",SName.GetBuffer(MAX_LENGTH),MAX_LENGTH,"c:\\setting.ini");



结果:SName = "jacky";这里需要注重点就是用完GetBuffer函数后一定要释放(用SName.ReleaseBuffer()函数),不然后面再用到SName的其他子函数就会失灵。



读整数比较简单,如下



int Result = GetPrivateProfileInt("Student","nAge",0,"c:\\setting.ini")返回值即为所读取的结果!



在GetPrivateProfileString最后一个参数是配置文件路径的参数,此路径只能是绝对路径,不能是相对路径,但现在我需要是我的exe文件能和我的配置文件在一起。因此我使用了GetCurrentDirectory函数。



原代码如下:



CString server_ip;

CString des="";

::GetCurrentDirectory(MAX_PATHLENGTH,des.GetBuffer(MAX_PATHLENGTH));

des.ReleaseBuffer();

des ="\\config.ini";

GetPrivateProfileString("PhoneDemo","Server_IP","",server_ip.GetBufferSetLength(15),15,des);

server_ip.ReleaseBuffer();



注重:在这里使用CString变量时,在使用完GetBuffer后,紧接着一定要使用ReleaseBuffer()函数,才可以进行其他的诸如字符串 操作
<< 深入理解C语言指针的奥秘 如何理解c和c 的复杂类型声明 >>
评分
10987654321
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号