WritePrivateProfileString与GetPrivateProfileString用法与区别

WritePrivateProfileString与GetPrivateProfileString用法与区别

从字面上来说:Write表示写,Get表示获取

------------------以.ini后缀名为例,其它没试过,有兴趣可试


先创建一个win32控制台应用程序(支持MFC功能的那个),源代码如下:

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{//第1步:将当前的所获得的IP,写入.ini文件
CString strName="192.168.0.111";
::WritePrivateProfileString("StudentInfo","Name",strName,"C:\\Documents and Settings\\Administrator\\桌面");
//注意:在VC源代码中,如果放在工程目录下的Debug文件目录下,会报错(即后面GetPrivateProfileString函数会得不到ip地址,显示结果为默认IP:127.0.0.1)
//第2步:从.ini文件中读取所获得的IP值
char ip[16];
::GetPrivateProfileString("StudentInfo","Name","127.0.0.1",ip,sizeof(ip),".\\server.ini");
//第3步:用AfxMessageBox显示读出的IP值
AfxMessageBox(ip);
return 0;
}

----------------->以下是第2次用.正式用的,所以了解的比上次更详细

获得IP与端口号的操作步骤(地址是放在桌面上的.当然用.\\server.ini也可行,推荐用指定地址)

UINT uPort;
uPort=::GetPrivateProfileInt("IPInfo","port",6666,"C:\\Documents and Settings\\Administrator\\桌面");
CString str;char ip[16];
// str=".\\server.ini";(LPCTSTR)str
::GetPrivateProfileString("IPInfo","IP","127.0.0.1",ip,sizeof(ip),"C:\\Documents and Settings\\Administrator\\桌面");

SetDlgItemInt(IDC_EDIT_PORT,uPort);
SetDlgItemText(IDC_COMBO_IP,_T(ip));

------------上面改对话框上默认IP与端口的,下面是改accept中的

/第4步:接受套接字:添加了IP与端口的信息///
SOCKADDR_IN clientaddr;
int len=sizeof(SOCKADDR);
char ip[20];
UINT port;
CString str;
// if((client=accept(server,0,0))!=INVALID_SOCKET )//默认不接受IP与端口等信息的情况下
if((client=accept(server,(SOCKADDR*)&clientaddr,&len))!=INVALID_SOCKET )//接受IP与端口信息
{
   strcpy(ip,inet_ntoa(clientaddr.sin_addr));
   port=ntohs(clientaddr.sin_port);str.Format("%d",port);

   ::WritePrivateProfileString("IPInfo","IP地址",ip,"C:\\Documents and Settings\\Administrator\\桌面");
   ::WritePrivateProfileString("IPInfo","port",str,"C:\\Documents and Settings\\Administrator\\桌面");

//   str.Format("IP地址: %s:%d",ip,port);
//   AfxMessageBox(str);
  
   CreateThread(0,0,SLisen,this,0,0); //this代表是对话框的类,警记:不要用(LPVOID)client,会出错,这不是DOS下
}
---------------------下面摘自网上的解释资料,当然MSDN中也有-----------------------

---------------GetPrivateProfileString----------------------

函数返回值为string的长度(long型),而从ini文件获得的字符串则保留在目的缓冲器中

DWORD GetPrivateProfileString(
LPCTSTR lpAppName, //配置文件的section名
LPCTSTR lpKeyName, //配置文件的key名
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);

  其中各参数的意义:

   前二个参数与 WritePrivateProfileString中的意义一样.

   lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.

   lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器.

   nSize : 目的缓存器的大小.

   lpFileName : 是完整的INI文件名.

lpApplicationName String,欲在其中查找条目的小节名称。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载这个ini文件所有小节的列表

  lpKeyName String,欲获取的项名或条目名。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载指定小节所有项的列表

  lpDefault String,指定的条目没有找到时返回的默认值。可设为空("")

  lpReturnedString String,指定一个字串缓冲区,长度至少为nSize

  nSize Long,指定装载到lpReturnedString缓冲区的最大字符数量

  lpFileName String,初始化文件的名字。如没有指定一个完整路径名,windows就在Windows目录中查找文件

---------------WritePrivateProfileString----------------------

1.所用的WINAPI函数原型为:

  BOOL WritePrivateProfileString(

  LPCTSTR lpAppName,

  LPCTSTR lpKeyName,

  LPCTSTR lpString,

  LPCTSTR lpFileName

  );

  其中各参数的意义

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

  LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.

  LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.

  LPCTSTR lpFileName 是完整的INI文件名.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值