[file0]
path=加密 C:\Documents and Settings\Administrator\桌面\234\123.txt
password=5
[file 12]
path=加密 c:\234.txt
password=43
[file16]
path=加密 C:\Documents and Settings\Administrator\桌面\234\[无极电影-www.wujidy.com].新少林寺.[国语中字.1024分辨率]_2.rmvb
password=5这里的区段不是连续的,想让区段变成连续的,如下效果:
[file0]
path=加密 C:\Documents and Settings\Administrator\桌面\234\123.txt
password=5
[file 1]
path=加密 c:\234.txt
password=43
[file2]
path=加密 C:\Documents and Settings\Administrator\桌面\234\[无极电影-www.wujidy.com].新少林寺.[国语中字.1024分辨率]_2.rmvb
password=5自己写了一段代码:
#include <stdio.h>
#include <windows.h>
#define CurrentRow 3 //配置文件的区段数量?
//修改配置文件的区段,使其顺序化
void RepairInitFileSectionName1(TCHAR *szInitFilePath)
{
DWORD i_Ret;
INT i=0;
INT j=0;
INT nFlag=0;
TCHAR i_section[MAX_PATH]={0};
TCHAR j_section[MAX_PATH]={0};
TCHAR path_value[MAX_PATH]={0};
TCHAR password_value[MAX_PATH]={0};
//TCHAR time_value[MAX_PATH]={0};
do
{
wsprintf(i_section,TEXT("file%d"),i);
i_Ret=GetPrivateProfileString(i_section,TEXT("path"),NULL,path_value,sizeof(path_value),szInitFilePath);
if((i_Ret==0)&&(nFlag<CurrentRow))
{
//读取的内容为空且项数不够则需要继续读取下面的区段
for(j=i+1;nFlag<CurrentRow;j++)
{
//继续读取下一个区段
wsprintf(j_section,TEXT("file%d"),j);
i_Ret=GetPrivateProfileString(j_section,TEXT("path"),NULL,path_value,sizeof(path_value),szInitFilePath);
if(i_Ret==0)
{
continue;//如果为空,进入下次
}
else
{
//说明读取到了内容
//需要把内容放到filei区段中
WritePrivateProfileString(i_section,TEXT("path"),path_value,szInitFilePath);
GetPrivateProfileString(j_section,TEXT("password"),NULL,password_value,sizeof(password_value),szInitFilePath);
WritePrivateProfileString(i_section,TEXT("password"),password_value,szInitFilePath);
//写完之后需要删除原来的区段
WritePrivateProfileString(j_section,NULL,NULL,szInitFilePath);
//写完之后对i进行++
i++;
nFlag++;
break;
}}
}
else
{
i++;
nFlag++;
}
}while(nFlag<=CurrentRow);
}
int main(int argc, char *argv[])
{RepairInitFileSectionName1("C:\\Documents and Settings\\Administrator\\桌面\\password.ini");
return 0;
}
发现没实现效果,并且还是个死循环,请大家看看代码哪里有问题了?如果嫌我的代码乱,那自己写个也OK的。
先说三克油吧。