16,470
社区成员
发帖
与我相关
我的任务
分享
GetPrivateProfileString 用这个读不行吗?
CString strItem;
int i = 0;
strItem.Format(L"ITEM%d",i);
CString strValue;
GetPrivateProfileString(strItem,L"content",strValue.GetBuffer(),30,strIniFilePath);
DWORD WINAPI GetPrivateProfileString(
__in LPCTSTR lpAppName,
__in LPCTSTR lpKeyName,
__in LPCTSTR lpDefault,
__out LPTSTR lpReturnedString,
__in DWORD nSize,
__in LPCTSTR lpFileName
);
#include<stdio.h>
#include <stdlib.h>
#include<windows.h>
int main()
{
char inifilepath[100]="\\config.ini";
char chSectionNames[2048]; //所有节名组成的字符数组
char * pSectionName; //保存找到的某个节名字符串的首地址
int i; //i指向数组chSectionNames的某个位置,从0开始,顺序后移
int j=0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量
int count=0; //统计节的个数
char body[50],start[8];
int k=0;
::GetPrivateProfileSectionNames(chSectionNames,2048,inifilepath);
GetPrivateProfileString("ITEM0","start","",start,8,inifilepath);
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;
if(k<=atol(start)) { goto end; }
// printf("%s\n",pSectionName);
GetPrivateProfileString(pSectionName,"body","",body,50,inifilepath);
printf("%s\n",body);
end:
if(chSectionNames[i+1]==0)
{
break; //当两个相邻的字符都是0时,则所有的节名都已找到,循环终止
}
}
}
_itoa(count,start,10);
WritePrivateProfileString("ITEM0","start",start,inifilepath);
return 0;
}