ini配置文件常用的四个函数

    虽然ini配置文件正在逐渐地被注册表所代替,在MSDN中也说明操作ini文件的API函数都是为了兼容16位的,但ini文件并没有退出舞台,还是广泛地应用于软件开发中。下面为我日前写小程序时因为要操作到ini文件而整理的四个常用API函数。现在网上关于这方面的资料也很多,也有较多的免费CIniFile类。

.
.
.
[student]
name1=xuzhihong
name2=chenxiuqing
name3=huhaihong
name4=zengqingchu
name5=zouguoxian
.
.
.
该文件路径d:/test.ini

BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
)
在指定段名下写进段信息,成功写进ini文件返回TRUE,失败返回FALSE
lpAppName:指定的段名,如果不存在则在文件的末尾创建,如果该值为NULL,该函数返回FALSE。
lpKeyName:指定的键名,如果不存在则在文件中创建该键名,如果该值为NULL,则删除lpAppName的字段信息,包括段名,此时第三个参数无效
lpString:指定的键名,如果该值为NULL,则删除lpKeyName指向的项。
从上面的参数分析可以知道,该函数拥有写、更改、删除的功能。

1.写
写入一个项:WritePrivateProfileString("student","name6","yanruxi","d://test.ini");

2.更改
将项name2的键值改为chenxiujie: WritePrivateProfileString("student","name2","chenxiujie","d://test.ini");

3.删除
删除项name5: WritePrivateProfileString("student","name5",NULL,"d://test.ini");
删除student整个字段: WritePrivateProfileString("student",NULL,NULL,"d://test.ini");

BOOL WritePrivateProfileSection(
LPCTSTR lpAppName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
根据指定的段名更改段名下各项的内容,成功写进ini文件返回TRUE,失败返回FALSE
lpAppName:指定的段名,如果不存在则在文件的末尾创建,并写进各项的内容,如果该值为NULL,该函数返回FALSE
lpString:存储待写进的项内容的buffer,该buffer的最大长度为65,535个字节,这里要注意了:你传入的是的串需
要用终结符('/0')结束,不然写进时很可能会出现乱码,如一个CString str="name=xuzhihong",你此时不能立即传
入,还需在后面加上str+='/0';如果该参数为NULL,则删除该段的内容,包括段名。
功能:写入新段、替换项内容、删除字段,清空字段内容
Example:
写入新段:WritePrivateProfileSection("lab508","member1=xuzhihong/0member2=chenxiuqing","d://test.ini");
替换项内容:WritePrivateProfileSection("student","member1=xuzhihong/0member2=chenxiuqing","d://test.ini");
删除字段:WritePrivateProfileSection("student",NULL,"d://test.ini");
清空字段内容:WritePrivateProfileSection("student","","d://test.ini");

DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
获取指定段的项内容
返回值:复制到lpReturnedString指定buffer的字节数,不包括终结符,如果buffer的长度不够则,则返回值为nSize-2
lpAppName:指定的段名,如果该值为NULL,则复制所有的段名到lpReturnedString指定的buffer
lpKeyName:指定的键名,如果该值为NULL,则复制所有的键名到lpReturnedString指定的buffer
lpDefault:如果没有指定的项,则将此buffer的内容复制到lpReturnedString,如果该值为NULL,复制的串为空串
lpReturnedString:[out]获取字符串的buffer
nSize:上个参数buffer的大小,应足够大。
功能: 获取所有的段名、获取所有的段名、获取某个项的键值。
Example:
char temp[255];
获取所有的段名:DWORD sum=::GetPrivateProfileString(NULL,NULL,NULL,temp,255,"d://test.ini")
获取所有的段名:DWORD sum=::GetPrivateProfileString("student",NULL,NULL,temp,255,"d://test.ini")
获取某个项的键值:DWORD sum=::GetPrivateProfileString("student","name1",NULL,temp,255,"d://test.ini")
从buffer中读取内容可以用下面的方式,结果放入一个字符串数组strArr
CStringArray strArr;
CString str;
for(int i=0;i<sum;i++)
{
str.Empty();
do
{
str+=temp[i];
i++;
}
while(temp[i]!='/0');//每一个结束符为一个子串
strArr.Add(str);
}

DWORD GetPrivateProfileSection(
LPCTSTR lpAppName,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
lpAppName:指定的段名,请注意:该值不要为NULL或者一个空串,否则会出错
lpReturnedString:[out]获取字符串的buffer,请注意:该值不要为NULL
nSize:上个参数buffer的大小,应足够大
Example:
char temp[255];
获取所有的段名:DWORD sum=::GetPrivateProfileString("student",temp,255,"d://test.ini");

 

 

/************************************************************************/
/* GetPrivateProfileString
/* GetPrivateProfileInt
/************************************************************************/

#include <windows.h>
#include <stdio.h>

//#define  WOM_WOMCLTMD_INI  "D://Poker//ini2//test1.ini"
int main(void)
{
 unsigned int func_rtn;
 char  IpAddr[16];
 int PORT;
 char  work[16];
 
    memset(IpAddr, '/0', sizeof(IpAddr));
    memset(work, '/0', sizeof(work));
 
    memcpy(work,"Can not fined",15);
 
 
    func_rtn = GetPrivateProfileString(
  "POKERSERVER",
  "IPADDR",
  work,     //指定的条目没有找到时返回的默认值。可设为空("")
  IpAddr,
  256,
  ".//test1.ini"
  /*WOM_WOMCLTMD_INI*/);

  
    printf("func_rtn = %d/nwork = %s/nIpAddr = %s/n",func_rtn,work,IpAddr);
 
 PORT = GetPrivateProfileInt(
  "POKERSERVER",
  "PORT",
  0,               
  ".//test1.ini");

 printf("PORT = %d/n work = %s/n/n", PORT, work);

    return 0;
}

 

 

ini:

[POKERSERVER]
PORT=8000
IPADDR=192.168.1.100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值