读取INI 字段

int GetSections(CStringArray& arrSection) //读取INI字段 { int i; int iPos=0; int iMaxCount; TCHAR chSectionNames[102400]={0}; //总的提出来的字符串 TCHAR chSection[20]={0}; //存放一个段名。 GetPrivateProfileSectionNames(chSectionNames,102400,"c:\\windows\\psw.ini"); //以下循环,截断到两个连续的0 for(i=0;i <102400;i++) { if (chSectionNames[i]==0) if (chSectionNames[i]==chSectionNames[i+1]) break; } iMaxCount=i+1; //要多一个0号元素。即找出全部字符串的结束部分。 //arrSection.RemoveAll();//清空原数组 for(i=0;i <iMaxCount;i++) { chSection[iPos++]=chSectionNames[i]; if(chSectionNames[i]==0) { arrSection.Add(chSection); memset(chSection,0,i); iPos=0; } } return (int)arrSection.GetSize(); } CWinApp theApp; using namespace std; void list_ini_user_pass() { CStringArray str_arr; GetSections(str_arr); for (int i=0;i< str_arr.GetSize();i++) { AfxMessageBox(str_arr[i].LockBuffer()); char str_type[100]; char str_domain[100]; char str_user[100]; char str_pass[100]; GetPrivateProfileString(str_arr[i].LockBuffer(),"LogonType",NULL,str_type,MAX_PATH,"c:\\windows\\psw.ini"); GetPrivateProfileString(str_arr[i].LockBuffer(),"Domain",NULL,str_domain,MAX_PATH,"c:\\windows\\psw.ini"); GetPrivateProfileString(str_arr[i].LockBuffer(),"User",NULL,str_user,MAX_PATH,"c:\\windows\\psw.ini"); GetPrivateProfileString(str_arr[i].LockBuffer(),"Password",NULL,str_pass,MAX_PATH,"c:\\windows\\psw.ini"); MessageBox(0,str_user,str_pass,0); } }

int read_ini_section_name(char str_ini_path[],char str_return[][100]) { char chSectionNames[2048]; //所有节名组成的字符数组 char * pSectionName; //保存找到的某个节名字符串的首地址 int i; //i指向数组chSectionNames的某个位置,从0开始,顺序后移 int j=0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量 int count=0; //统计节的个数 int k=0; ::GetPrivateProfileSectionNames(chSectionNames,2048,str_ini_path);

for(i=0;i<2048;i++,j++) { if(chSectionNames[0]=='\0') { break; //如果第一个字符就是0,则说明ini中一个节也没有 } if(chSectionNames[i]=='\0') { pSectionName=&chSectionNames[i-j]; //找到一个0,则说明从这个字符往前,减掉j个偏移量, //就是一个节名的首地址 j=-1; //找到一个节名后,j的值要还原,以统计下一个节名地址的偏移量 //赋成-1是因为节名字符串的最后一个字符0是终止符,不能作为节名的一部分 ++k; ++count; strcpy(str_return[i],pSectionName); if(chSectionNames[i+1]==0) { break; //当两个相邻的字符都是0时,则所有的节名都已找到,循环终止 } } } return 0; }

调用方法

char str_return[1024][100]={0};

read_ini_section_name("c:\\windows\\psw.ini",str_return);

for (int i=0;i<1024;i++) { if (strlen(str_return[i])) { MessageBox(0,str_return[i],0,0); } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值