CString str,list1[100],list2[100];for(n=0;n<i;n++)
{
   str.Format("%d",n);
   GetPrivateProfileString("sectionname","A"+str,"NoKey1!",list1[n].GetBuffer(MAX_PATH),(MAX_PATH),MAX_PATH,"C:\\Control.ini");
   GetPrivateProfileString("sectionname","B"+str,"NoKey2!",list2[n].GetBuffer(MAX_PATH),(MAX_PATH),MAX_PATH,"C:\\Control.ini");
}在ini文件中:
[sectionname]   
A1=a;
A2=b;
A3=c;
.............跟踪变量发现
数组list1[n]每次都能取回A1、A2、A3的值
数组list2[n]每次的值都是空,而不是"NoKey2!"把ini文件中的赋值都添上:
[sectionname]  
A1=a;
A2=b;
A3=c;
B1=aaa;
B2=bbb;
B3=ccc;
.............
数组list2[n]每次的值还是空,而不是B1、B2、B3的值,也不是"NoKey2!"指定Buffer的大小
GetPrivateProfileString("sectionname","A"+str,"NoKey1!",list1[n].GetBuffer(100),(MAX_PATH,"C:\\Control.ini");
GetPrivateProfileString("sectionname","B"+str,"NoKey2!",list2[n].GetBuffer(100),(MAX_PATH,"C:\\Control.ini");
还是不行请大家帮我看看改改,谢谢了!

解决方案 »

  1.   

    1.你的代码有问题,GetPrivateProfileString多了一个参数
    GetPrivateProfileString("sectionname","A"+str,"NoKey1!",list1[n].GetBuffer(MAX_PATH),(MAX_PATH),MAX_PATH,"C:\\Control.ini");
    应该是:
    GetPrivateProfileString("sectionname","A"+str,"NoKey1!",list1[n].GetBuffer(MAX_PATH),MAX_PATH,"C:\\Control.ini");2,for(n=0;n<i;n++)
    n从0开始,那么第一个读取的应该是A0,B0,但你是从A1开始的我测试你这代码读不到值时是能返回NoKey2的,其他也都是正常的
      

  2.   

    老兄,其他是没有问题的,那你要不不要用C:\\Control.ini换个目录看看或不要用CString类型,用char类型先读一个试试,我测试过了你这代码没有问题的
      

  3.   

    把"B"+str
    先变成
    str = "B"+str;然后用str来代替试试
      

  4.   

    对了,会不会跟我对注释写法有关系[sectionname]        
    A1=a; 
    //注释
    A2=b; 
    //注释
    A3=c; 
    //注释
    .............  会不会这样就取不回NoKey2?
      

  5.   

    你的Control.ini文件的格式好像有问题:
    [sectionname]
    A1=a
    A2=b
    A3=c
    B1=aaa
    B2=bbb
    B3=ccc每行后面没有分号“;",你说代码是笔误,可能没有错误吧!还有要注意Control.ini路径的选择
      

  6.   

    有;也不要紧,试试用char[]来读读吧
      

  7.   

    检查出来了,是一个小问题,已改正
    谢谢大家的指教但又碰到新的麻烦
    http://community.csdn.net/Expert/topic/3849/3849704.xml?temp=.9863397解决了一并给分,
    谢谢