您的位置:首页 > 编程语言 > PHP开发

WritePrivateProfileString与GetPrivateProfileString用法与区别

2012-10-16 17:05 483 查看

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文件名.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐