不晓得哪里有问题,迷茫了。。。。

yiruirui0507 2011-07-13 12:04:54
[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的。
先说三克油吧。
...全文
118 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiruirui0507 2011-07-13
  • 打赏
  • 举报
回复
确实是不小心导致的。。。。。。。。。。不匹配
healer_kx 2011-07-13
  • 打赏
  • 举报
回复
调试呗。
KD左耳 2011-07-13
  • 打赏
  • 举报
回复
猛灌水....
不懂...
kyotrue 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 youhao1999 的回复:]
引用 2 楼 healer_kx 的回复:
调试呗。

+1
[/Quote]
+2
youhao1999 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 healer_kx 的回复:]
调试呗。
[/Quote]
+1
oyljerry 2011-07-13
  • 打赏
  • 举报
回复
ini文件的section部分不应该有空格.
Eleven 2011-07-13
  • 打赏
  • 举报
回复
wsprintf(i_section,TEXT("file%d"),i);
和你的[file 12]应该不匹配吧
yiruirui0507 2011-07-13
  • 打赏
  • 举报
回复
[file 12]
悲剧就是这样子的
呔妖怪来嘛 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]
wsprintf(i_section,TEXT("file%d"),i);
和你的[file 12]应该不匹配吧
[/Quote]
膜拜 眼光独到
本本人 2011-07-13
  • 打赏
  • 举报
回复
不匹配导致的!

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧